C++ 如何从while(getline(cin,tmp))跳转?
我正在读《通用编程和stl》 在第一章中,这是一个这样的例子C++ 如何从while(getline(cin,tmp))跳转?,c++,stl,io,C++,Stl,Io,我正在读《通用编程和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.e
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;
}
intmain()
{
向量v;
串tmp;
虽然(getline(cin,tmp))//问题在这里,但它一直要求我输入值
v、 推回(tmp);
排序(v.begin(),v.end());
复制(v.begin(),v.end(),ostream_迭代器(cout,“\n”);
返回0;
}
我如何摆脱它,它一直要求我输入值,没有结束…发送文件结束字符:您可以使用CTRL-Z返回(Windows)或CTRL-D(Unix终端)。然后,
getline
将返回false,因为没有更多内容可从stdin
读取
另一种方法是:通过管道将另一个程序的输出传输到此程序。您的程序要求输入,直到到达指定位置。在类UNIX系统上使用CtrlD或在Windows上使用CtrlZ发送EOF以指示输入结束。因为您基本上没有比较while循环中的任何内容,所以您只给出了迭代器,而没有给出退出的条件 因此,添加一个var并增加循环,在五次迭代后,循环应该退出
int x=0;
While(getline(cin,tmp),x!=5){
//other code
x++;
}
cin
!=stdin
,即使它们指向相同的低级句柄/描述符/任何东西。@Chris:是的,但是stdin
C文件*
指针不同于“标准输入”概念,即从主机环境提供给程序的输入流。贝努伊特指的是后者。@Adam Rosenield:这确实是我所说的,我不打算使用C标题中的stdin
。谢谢你的建议。但我认为问题的关键在于EOF标志。@Rob:useXXX for theme:FooBar!,编辑:不在评论中工作。。。