use*_*983 12 c++ file-io cin eof
我用"cin"来读取输入流中的单词,就像
int main( ){
string word;
while (cin >> word){
//do sth on the input word
}
// perform some other operations
}
Run Code Online (Sandbox Code Playgroud)
代码结构类似于上面的代码结构.它是可编译的.在执行期间,我继续输入类似的内容
aa bb cc dd
Run Code Online (Sandbox Code Playgroud)
我的问题是如何结束这个输入?换句话说,假设文本文件只是"aa bb cc dd".但我不知道如何让程序知道文件结束.
Mik*_*wis 18
你的代码是正确的.如果您以交互方式输入,则需要发送EOF字符,例如CTRL-D.
在阅读文件时不需要此EOF字符.这是因为一旦你到达输入流的末尾,就没有任何东西可以"cin"了(因为流现在已经关闭),因此while循环退出.
正如其他人已经回答了这个问题,我想补充一点:
由于Windows上的Ctrl-Z(以及unix系统上的Ctrl-D)会导致EOF到达,并且您从while循环中退出,但是在while循环外部您无法读取更多输入,因为已经到达EOF.
因此,要cin再次启用读取,您需要清除eof标志和所有其他失败标志,如下所示:
cin.clear();
Run Code Online (Sandbox Code Playgroud)
这样做之后,您可以cin再次开始阅读输入!