我如何跳过(getline(cin,tmp))?

时间:2011-09-28 03:29:14

标签: c++ stl io

我正在阅读'通用编程和stl'

在第1章中,这是一个这样的样本,

int main()
{
    vector<string> v;
    string tmp;

    while(getline(cin,tmp))  //problem is here, it keep asking me to input value
        v.push_back(tmp);

    sort(v.begin(), v.end());
    copy(v.begin(), v.end(), ostream_iterator<string>(cout,"\n"));

    return 0;
 }

我如何摆脱困境,它一直要求我输入值,没有结束......

3 个答案:

答案 0 :(得分:7)

发送文件结束符:您可以使用CTRL-Z返回(Windows)或CTRL-D(Unix终端)。然后,getline将返回false,因为无法从stdin读取任何内容。

另一种方法是:将另一个程序的输出传输到这个程序中。

答案 1 :(得分:5)

您的程序要求输入,直到它到达EOF。在类UNIX系统上使用 Ctrl D 或在Windows上使用 Ctrl Z 发送EOF以指示输入结束。

答案 2 :(得分:0)

因为你没有基本上在你的while循环中比较任何东西你只给了一个迭代器而不是退出的条件。

所以添加一个var并将你的循环递增到五次迭代之后它应该退出

int x=0;
While(getline(cin,tmp),x!=5){
     //other code

 x++;
 }