如何从 while(getline(cin,tmp)) 跳转?
我正在阅读第1章中的“通用编程和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;
}
我如何摆脱它一直要求我输入值,没有结束......
I am reading 'generic programming and the stl'
in chapter1, this is a sample like this,
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;
}
how do I get out of the while, it keep asking me to input value, no ending....
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
发送文件结束字符:您可以使用 CTRL-Z Return (Windows) 或 CTRL-D(Unix 终端)。然后,
getline
将返回 false,因为没有更多内容可从stdin
读取。另一种方法是:将另一个程序的输出通过管道传输到这个程序中。
Send an end-of-file character: you can use CTRL-Z Return (Windows), or CTRL-D (Unix terminals). Then,
getline
will return false as there is nothing more to read fromstdin
.An alternative is: pipe the output of another program into this one.
您的程序会要求输入,直到到达 EOF。在类 UNIX 系统上使用 CtrlD 或在 Windows 上使用 CtrlZ 发送 EOF 来指示输入结束。
Your program asks for input until it reaches the EOF. Use CtrlD on UNIX-like systems or CtrlZ on Windows to send EOF to indicate end of input.
因为您基本上没有在 while 循环中比较任何内容,所以您只给出了迭代器而不是退出条件。
因此,添加一个 var 并将循环增加到 5,五次迭代后它应该退出
Because your not comparing anything basically in your while loop you only gave an iterator not a condition for exit.
So add a var and increment your loop to say 5 after five iterations it should exit