Visual Studio 2013 建立空專案編寫 C++ 控制台程式,執行後控制台視窗一閃而過,無法看到輸出結果。程式碼使用 cin.get() 嘗試暫停,但無效果。
int main() {
int lang;
cout << "請為lang輸入一個數字:";
cin >> lang; // ① 輸入數字並按 Enter,緩衝區殘留 '\n'
cout << ma(lang);
cin.get(); // ② 直接讀取殘留的 '\n',不阻塞,程式結束
return 0;
}
cin >> lang 讀取整數後,輸入緩衝區仍保留換行符 '\n'。隨後 cin.get() 讀取單字元時,直接消費該換行符並返回,不會等待使用者新輸入,導致程式立即退出。
cin >> lang;
cout << ma(lang);
cin.get(); // 讀取殘留 '\n'
cin.get(); // 真正等待使用者按鍵
return 0;
#include // 需包含此頭檔
cin >> lang;
cout << ma(lang);
cin.ignore(numeric_limits::max(), '\n'); // 忽略至換行符
cin.get(); // 等待按鍵
return 0;
system("pause");
return 0;
cin.ignore() 清理緩衝區的習慣,避免後續 getline()、cin.get() 讀取異常F9)與 Locals/Watch 視窗,觀察變數值與緩衝區狀態system()採用方案二修改程式碼後,控制台將正確暫停等待使用者按鍵,解決閃退問題。