首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C++ vector push_back 後程序無法繼續:cin 讀取未正確結束

     編輯:程式設計疑難解答

現象

輸入數字後按回車,程序卡住無輸出,`while (cin >> iVal)` 未退出。

原因

`cin >> iVal` 遇到**非整數輸入**(如換行符、字母)會進入失敗狀態,但**不消耗換行符**,導致無限循環。且控制台輸入流無 EOF 信號(Windows `Ctrl+Z`、Linux `Ctrl+D` 才算 EOF)。

修正:約定結束標記

cout << "輸入數字,輸入 0 結束:\n";
while (cin >> iVal && iVal != 0) {
    vInt.push_back(iVal);
}
// 後續處理

或讀取整行再解析:

string line;
getline(cin, line);
istringstream iss(line);
while (iss >> iVal) vInt.push_back(iVal);

邏輯錯誤修正

輸出相鄰和的循環中 `*(++it)` 會導致迭代器雙重遞增,應改為:

for (auto it = vInt.cbegin(); it != vInt.cend() - 1; ++it) {
    cout << (*it + *(next(it))) << " ";
}
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved