两种getline的用法--iostream和string

第一种: 在<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,'#');这种情况下,换行没有用,必须遇到#才停止读入

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值