c++ 不理解cin.get()和while循环之间的交互

k5ifujac  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(130)

所以,我是一个绝对的初学者在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循环交互的关键知识?

7hiiyaii

7hiiyaii1#

在Microsoft Windows上,必须在控制台上按ENTERCTRL-ZENTER键,程序才能注册文件尾。
在行的中间按Ctrl-Zenter是不够的,这只在行的开头起作用。
这不是 C++ 本身的问题,而是操作系统的问题,也可能是你正在使用的C++运行库的问题。在其他操作系统上,如Linux或MacOS,这种行为是不同的。

相关问题