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