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