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

时间:2009-08-12 03:19:32

标签: c++ stream

string s;
getline(cin,s);

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

2 个答案:

答案 0 :(得分:8)

由于我今天懒得给出一个完整的答案,我只会在Freenode的## c ++中粘贴真正有用的机器人说:

  

使用“while(!stream.eof()){}”几乎肯定是错误的。使用流的状态作为测试值:while(std :: getline(stream,str)){}。有关进一步说明,请参阅http://www.parashift.com/c++-faq-lite/input-output.html#faq-15.5

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

string s;

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

答案 1 :(得分:1)

string s;
getline(cin,s);

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