我正在阅读'通用编程和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;
}
我如何摆脱困境,它一直要求我输入值,没有结束......
答案 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++;
}