如何自动停止 getline() 循环在 cin 上

How to stop getline() loop over cin automatically

本文关键字:循环 cin 何自动 getline      更新时间:2023-10-16

你好,我的代码如下:

while (getline(cin, line))
{
    // process on line
}

因此,这会导致用户不断放置行,直到他输入 ^z。如何使其在没有用户干预的情况下自动停止?例如,当用户粘贴没有 ^z 的输入行时,我需要上面的循环来执行处理然后停止。

std::getline将提取直到:

  • 遇到EOF,这设置了EOFBIT
  • 遇到分隔符(未设置任何标志,因此下一次提取不会失败)
  • 您遇到了std::string::max_size,这会设置故障位
  • 发生错误

您不能让用户复制/粘贴并期望程序自动知道用户已完成。如果输入是其他内容(如文件)怎么办?

RE 注释:您仍然可以从文件中通过管道输入,并且程序无法区分。

# will stop extraction via EOF
cat file | ./a.out