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

时间:2015-03-15 12:40:15

标签: c++ cin getline

您好我的代码如下:

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

所以这会导致用户继续放线,直到他输入^ z。 我怎样才能让它在没有用户干预的情况下自动停止?例如,当用户在没有^ z的情况下粘贴输入行时,我需要上面的循环来进行处理,然后停止。

1 个答案:

答案 0 :(得分:1)

std::getline将提取,直到:

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

您无法让用户复制/粘贴,并希望程序自动知道用户已完成。如果输入是其他内容,如文件,该怎么办?

RE评论:您仍然可以从文件中输入管道,程序无法区分。

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