我如何从while(getline(cin,tmp))跳转

How do I jump from while(getline(cin,tmp))?

本文关键字:tmp 跳转 cin getline while      更新时间:2023-10-16

我正在阅读'泛型编程和stl'

在第一章,这是一个这样的例子,

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;
 }

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

发送文件结束字符:您可以使用CTRL-Z Return (Windows)或CTRL-D (Unix终端)。然后,getline将返回false,因为没有更多的内容可从stdin中读取。

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

您的程序一直请求输入,直到它到达EOF。在类unix系统上使用CtrlD或在Windows系统上使用CtrlZ发送EOF以表示输入结束。

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

因此添加一个var并将循环增加为5在五次迭代后它应该退出

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