C++ getline()

getline在c++库中可以找到两个版本
第一个是在istream的库中,第二个是在string库中
声明如下
std :: istream :: getline
istream&getline(char * s,streamsize n);
istream&getline(char * s,streamsize n,char delim);
官方给出的注释是从流中提取字符作为未格式化的输入,并将它们作为c的字符串存储到s中,直到提取的字符是定界字符,或者将n个字符写入s(包括终止的空字符)为止。

std::getline (string)
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);
官方注释是将行从流转换为字符串,将其存储到str直到划界字符delim被发现(或换行字符“\ n”)。
如果到达文件末尾也停止或如果输入操作期间发生的一些其它错误。
如果找到划界符delim,则将其提取并丢弃(即不存储定界符,下一个输入操作将在定界符之后开始)。
请注意,调用之前str中的任何内容都将被新提取的序列替换。
每个提取的字符都将附加到字符串,就像其成员push_back一样。

可以看到其返回值的类型是istream& ,对于while (getline(ss, str, ‘,’)) 这样的使用为什么可以通过呢。
istream的状态由几个标志位决定,eof,badbit,failbit,这个while的判断实际上隐式调用了 !cin.fail(),
当get执行到末位或者标志位置为真 则退出while循环。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值