两种getline的用法--iostream和string
发布日期:2022-02-21 17:40:31 浏览次数:49 分类:技术文章

本文共 779 字,大约阅读时间需要 2 分钟。

第一种: 在<iostream>中的getline()函数有两种重载形式:

istream& getline (char* s, streamsize n );

istream& getline (char* s, streamsize n, char delim );

getline顾名思义即读入一行,遇到换行/delim/字数达到限定,就会终止读入

第二种: 在<string>中的getline函数有四种重载形式:

istream& getline (istream&  is, string& str, char delim);

istream& getline (istream&& is, string& str, char delim);
istream& getline (istream&  is, string& str);

istream& getline (istream&& is, string& str);

同理:遇到换行/delim,str读入大小为0

举例说明上述例子:只说明了常用的

输出结果:

这里注意:从上面例子看,使用string中的getline做循环,我又添加了aus.size()作为判断条件。

这是因为:如果只有getline这个判断条件,while判断语句的真实判断对象是cin的状态,也就是判断当前是否存在有效的输入流。因此就算我们换行,对于cin来说也是有效的输入流,只是aus的大小为0而已,所以是跳不出循环的。

另外值得注意的一个问题:在string的getline中

getline(cin,aus);这种情况就是遇到换行就不再读入

getline(cin,aus,'#');这种情况下,换行没有用,必须遇到#才停止读入

也就是说每次换行和标志符只能有一个有效!!!

像下面这种写法是跳不出循环的:

转载地址:https://blog.csdn.net/weixin_40599276/article/details/97911653 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:c++-----引用和二级指针的关系
下一篇:c++中拷贝构造-----深拷贝和浅拷贝

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月19日 15时35分24秒