我知道使用ctrl-z來表示EOF或EOT通常是過時的並且不推薦,但我只是對引擎蓋下發生的事情感到好奇。爲什麼只有在Windows控制檯程序中按Ctrl + Z時纔會終止輸入?
說我在C這樣的事情++:
#include <iostream>
#include <string>
int main() {
while (!cin.eof()) {
string str;
getline(cin, str);
}
cout << "out of while" << endl;
return 0;
}
如果我做ABC [^ Z] [換行符],程序仍然運行。相同的abc [^ D] [新行]。
但是,如果我輸入一行純粹包含[^ Z] [換行符],程序就會正常存在。
我知道這可能是操作系統特定的,但我只是對那裏發生的事情感到好奇。
Windows/DOS在命令行中不是很有用。嘗試詢問Cygwin/MSYS人員關於他們嘗試使程序在bash和cmd.exe上運行的經驗。順便說一句,'while(!cin.eof())'是不好的形式;不會改變你的結果,但幾乎在任何情況下都是不正確的。 – DanielKO