0
我有一些代碼要求用戶輸入字母數字字符,如果他們輸入了其他內容(例如@,#,$),它會再次要求輸入字母數字字符。 出於某種原因,我需要輸入一個非字母數字字符兩次才能接受它。這是代碼。爲什麼我需要輸入非char值兩次才能結束程序
#include <iostream>
#include <cctype>
using namespace std;
void get_option(char& input, string msg) {
string clear_input;
bool isletter;
bool isnumber;
bool test = 0;
while (test == 0) {
cout << msg;
cin >> input;
isletter = isalpha(input);
isnumber = isdigit(input);
if (isletter == 0 && isnumber == 0) {
cin.clear();
cin >> clear_input;
cout << input << endl << isnumber << endl << isletter << endl;
test = 0;
}
else if (isletter == 1 || isnumber == 1) {
test = 1;
}
}
}
int main() {
char input;
string msg = "Please enter an alphanumeric char: ";
get_option(input, msg);
return 0;
}
因爲在用戶沒有輸入字母數字字符的情況下,你有'cin >> clear_input'行嗎?這將等待來自用戶的進一步輸入。 –
不要將布爾值與'0'和'1'進行比較。寫下'if(!isletter &&!isnumber)...'和'if(isletter || isnumber)...'。 (並且不要給它們分配'0'和'1',使用'false'和'true'。) – molbdnilo
感謝您的建議並回答我的問題。我仍然是C++的noob,我很感激所有我能得到的幫助。 – MattB