【发布时间】:2013-10-22 18:12:35
【问题描述】:
我知道使用 ctrl-z 来表示 EOF 或 EOT 通常已过时且不推荐,但我只是对幕后发生的事情感到好奇。
假设我在 C++ 中有这样的东西:
#include <iostream>
#include <string>
int main() {
while (!cin.eof()) {
string str;
getline(cin, str);
}
cout << "out of while" << endl;
return 0;
}
如果我执行 abc[^Z][newline],程序仍然运行。与 abc[^D][newline] 相同。
但如果我输入的一行纯粹包含[^Z][newline],则程序正常存在。
我知道它可能是特定于操作系统的,但我只是好奇那里发生了什么。
【问题讨论】:
-
Windows/DOS 并不以在命令行中有用而闻名。尝试向 Cygwin/MSYS 人员询问他们尝试使程序在 bash 和 cmd.exe 上运行的经验。顺便说一句,
while (!cin.eof())是不好的形式;不会改变您的结果,但几乎在所有情况下都是不正确的。
标签: c++ windows input inputstream