我不明白爲什麼這個while循環不停止,一旦結束條件匹配?爲什麼這個while循環停止?
這個想法是用戶輸入一個5位數的整數,並可以鍵入其他任何東西來終止輸入過程。但
bool noerror(true);
int n(0),part2temp;
vector<int> part2;
while(noerror){
cout << "Please enter the 5 integer (x to stop)" << endl;
cin >> part2temp;
part2.push_back(part2temp);
n++;
if (cin.fail()||part2temp>99999||part2temp<10000){
cout << "End condition matched" << endl;
cin.clear();
cin.ignore(10);
noerror=(false);
}
}
cout << "escaped loop" << part2[n] << endl;
我得到的輸出從循環的中頻部分的畫面時,我在X的例子,但由於某些原因改變布爾值不會終止循環和文本輸入「逃脫環」從未在屏幕上顯示。
誰能告訴我我做錯了什麼?
有幾件事:首先,矢量中的索引從[0 ... n]開始,所以'part2 [n]'索引一個超過結尾。第二,你不需要跟蹤矢量中元素的數量,「std :: vector」爲你做這件事;使用'part2.size()'來獲取值。第三,假設vector非空,'part2.back()'是訪問最後一個元素的最簡單方法。 – 2013-02-18 09:26:56
什麼樣的最終條件(你有三個)不符合你的期望?他們全部?? – WhozCraig 2013-02-18 09:27:00
另外,您應該檢查是否在訪問'part2temp'(即'push_back'之前)之前_before_失敗。 (你應該在循環中定義'part2tmp',而不是在其外面。) – 2013-02-18 09:28:35