只有當Ctrl+Z單獨位於一行的行首時,才表示輸入的終止!(即無論何時,都推薦先回車,再Ctrl+Z,再回車結束輸入)
當Ctrl+Z位於行中、行末時,輸入都不會結束。
(Ctrl+Z表示一個字符,其ASCII碼為26.)
1 int main() 2 { 3 vector<string>words; // (1)當輸入為: 1 2 3 4 時,程序正常結束,輸出為 4
4 string a; // ^z
5 while(cin >> a) 6 words.push_back(a); // (2)當輸入為: 1 2 3 4 ^z 5 6時,程序並不會結束,此時回車再ctrl+z后才可以讓程序結束,
7 cout << words.size(); // 但是輸出為5,因為^z被當做字符處理。(只處理^z之前的字符)
8 return 0; 9 }
1 int main() 2 { 3 int a; 4 vector<int> v; 5 while(cin >> a) //此處當Ctrl+Z在行末時也不會出錯,因為此處需要輸入的時int型整數,
6 v.push_back(a); //但Ctrl+Z是一個字符,即錯誤輸入(類型不匹配),故程序終止
7 cout << v.size(); 8 return 0; 9 }
科普:
Ctrl+Z表示一個字符,其ASCII碼為26.
鍵盤上所有的鍵(包括組合鍵)都有自己的掃描碼和ASCII碼,這些掃描碼和ASCII碼是由鍵盤中斷(int 16h)定義的。 windows系統中,單擊 開始→運行,在“打開”框中輸入:cmd /c debug,確定,進入debug調試程序,鍵入輸入指令命令A並回車,然后輸入: mov ah,0 int 16 回車 g104 按CTRL+Z 這時,AH=2ch,AL=1ah。AH的值就是CTRL+Z的掃描碼,AL的值就是CTRL+Z的ASCII碼。1ah是十六進制數,換算成十進制數就是26。