Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c+;中使用getline()时如何确定它是否为EOF+;?_C++_Stream - Fatal编程技术网

C++ 在c+;中使用getline()时如何确定它是否为EOF+;?

C++ 在c+;中使用getline()时如何确定它是否为EOF+;?,c++,stream,C++,Stream,由于我今天懒得给出完整的答案,我将粘贴Freenode上的##c++中真正有用的机器人所说的内容: 使用“while(!stream.eof()){}”几乎肯定是错误的。改用流的状态作为测试值:while(std::getline(stream,str)){}。有关详细说明,请参阅 换句话说,您的代码应该是 string s; getline(cin,s); while (HOW TO WRITE IT HERE?) { inputs.push_back(s); get

由于我今天懒得给出完整的答案,我将粘贴Freenode上的##c++中真正有用的机器人所说的内容:

使用“while(!stream.eof()){}”几乎肯定是错误的。改用流的状态作为测试值:while(std::getline(stream,str)){}。有关详细说明,请参阅

换句话说,您的代码应该是

string s;
getline(cin,s);

while (HOW TO WRITE IT HERE?)
{
    inputs.push_back(s);    
    getline(cin,s);
}

+1。在C++中,很少有一个正确的选择是直截了当的和惯用的。是的,它是有效的,是的,它回答了这个问题,但是我很喜欢COPPro。除了更简单、更易于维护外,如果发生其他I/O错误,coppro的答案将正确退出。您是对的。我还没有通过“知道什么时候它的eof”部分。
string s;

while (getline(cin, s))
{
    inputs.push_back(s);    
}
string s;
getline(cin,s);

while (!cin.eof)
{
        inputs.push_back(s);    
        getline(cin,s);
}