所以,我是一个绝对的初学者在C++,而通过阅读书籍,我遇到了这个例子:
int character;
while ((character = cin.get())!= EOF)
cout.put(character);
所以我决定复制它并在Visual Studio中测试它,我遇到了这种情况:
Testing sentence 1
Testing sentence 1
Testing ^z sentence 2
Testing Why is the loop still going?
Why is the loop still going?
^z
所以理论上cout.put()函数应该在cin.get()到达ctrl-z后停止。然而,循环继续。我甚至尝试在输入的末尾使用ctrl-z,结果也类似,也许我错过了一些关于流和while循环交互的关键知识?
1条答案
按热度按时间7hiiyaii1#
在Microsoft Windows上,必须在控制台上按ENTERCTRL-ZENTER键,程序才能注册文件尾。
在行的中间按Ctrl-Zenter是不够的,这只在行的开头起作用。
这不是 C++ 本身的问题,而是操作系统的问题,也可能是你正在使用的C++运行库的问题。在其他操作系统上,如Linux或MacOS,这种行为是不同的。