我創建了一些代碼,要求您輸入一個變量,然後要求您輸入每個變量,然後將其存儲在一個向量中。我遇到的問題是,當你輸入不正確的東西,並要求你再試一次時,它要麼根據你輸入的字符輸入變量一定的次數,這真的很奇怪。我認爲使用ssinput.clear();
會解決這個問題,但事實並非如此。爲什麼while循環輸出很奇怪的東西?
舉例來說,如果我打這些東西到下面的終端:
Please input variable 1: a
ERROR, PLEASE ENTER ONLY VALID SYMBOLS
---------------------
Please input variable 1: 1
Please input variable 1: 3
Please input variable 1: 5
Please input variable 2: 1
Please input variable 3: 4
Please input variable 4: 3
Please input variable 5: 3
總的來說它是非常散發性和陌生。我的代碼在下面。
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
using namespace std;
int inputErrorMessage(){
cout << "\n ERROR, PLEASE ENTER ONLY VALID SYMBOLS \n";
cout << "--------------------- \n";
return 0;
}
int main(){
// Declare the variables, vectors, etc.
int varNum = 1;
int totVar = 5;
vector<double> userNums;
double input = 0;
string checkInput = "";
bool valid = false;
stringstream sstotVar;
while(!valid){
valid = true;
// Ask the user for each variable, then record it into the array
for (int i = 0; i < totVar; ++i) {
cout << "Please input variable " << varNum << ": ";
getline(cin, checkInput);
stringstream ssinput(checkInput);
ssinput >> input;
if (ssinput.fail()) {
inputErrorMessage();
valid = false;
}
if (valid == true) {
userNums.push_back(input);
varNum++;
}
ssinput.clear();
}
}
}
最小代碼....你有兩個非常大的循環...將它縮小到你遇到問題的那個循環,並且不要添加所有庫耶穌... –
好吧,我會這樣做 – PeteMcGreete
它會讓你更容易給你一個很好的答案。 –