遇到了要输入一行字符串的操作,我想除了fgets()的方法(fgets()用法链接),getline()也是可以的,但是我对getline的操作不熟悉,便查阅了很多资料,发现都说的很模糊,借这个机会我想彻底理清楚getline的用法;
网上有说getline有两种用法的,我在这总结一下,
1) | istream& getline (istream& is, string& str, char delim); Jetbrains全家桶1年46,售后保障稳定 |
---|---|
(2) | istream& getline (istream& is, string& str); |
头文件#include<string>
is是一个流,例如cin
str是一个string类型的引用,读入的字符串将直接保存在str里面
delim是结束标志,默认为换行符
例子1:
// extract to string
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string name;
cout << "Please, enter your full name: ";
getline (cin,name);
cout << "Hello, " << name << "!\n";
return 0;
}
执行结果:
Please, enter your full name: yyc yyc
Hello, yyc yyc!
总结;可以看出来,getline()这个函数是可以读取空格,遇到换行符或者EOF结束,但是不读取换行符的,这与fgets()存在着差异
例子2:
// extract to string
#include <iostream>
#include <string>
using namespace std;
int main ()
{
string name;
cout << "Please, enter your full name: ";
getline (cin,name,'#');
cout << "Hello, " << name << "!\n";
return 0;
}
输出结果:
Please, enter your full name: yyc#yyc Hello, yyc!
istream&getline(char * s,streamsize n);
istream&getline(char * s,streamsize n,char delim);
头文件#include<iostream>
s是一个字符数组,例如char name[100]
n是要读取的字符个数
delim是结束标志,默认为换行符
例子:
//istream::getline example
#include <iostream> // std::cin, std::cout
using namespace std;
int main () {
char name[256], title[256];
cout << "Please, enter your name: ";
cin.getline (name,256);
cout << "Please, enter your favourite movie: ";
cin.getline (title,256);
cout << name << "'s favourite movie is " << title;
return 0;
}
输出结果:
Please, enter your name: yyc Please, enter your favourite movie: car yyc’s favourite movie is car
——————————————————————————————————————————————————————
string str; while(getline(cin,str)){ 。。。 }
那么在这个例子中是不是我们输入了一个回车就会跳出循环呢,答案是否定的,while只会检测cin的输入是否合法,那么什么时候会跳出循环呢,只有1.输入EOF,2.输入到了文件末尾
string str; while(getline(cin,str),str != “#”){ 。。。 }
在这个例子中,逗号运算符的作用就是将最后一个式子作为判定的条件,即while判断的是str != “#”这个条件,只有当输入到str的为#键时,循环才会结束
版权声明:本文为原创文章
如需转载请注明出处:https://blog.csdn.net/m0_37616927/article/details/86749099
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/234560.html原文链接:https://javaforall.cn
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有