我知道使用 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][换行符] 相同。
但是如果我输入的一行纯粹包含 [^Z][newline],则程序正确存在。
我知道它可能是特定于操作系统的,但我只是对那里发生的事情感到好奇。