我正在尝试写一个提示,要求用户确认操作,Y / N是唯一的两个选项。
如果用户输入Y,它会执行某些操作,如果用户输入N,则会执行其他操作。但是,如果用户输入除Y或N以外的任何内容,它只会重复该问题,直到按下Y或N.
这是我到目前为止所得到的:
char result = '\0';
while (result != 'y' || result != 'n')
{
char key = '\0';
cout << "Do you wish to continue & overwrite the file? Y/N: ";
cin >> key;
result = tolower(key);
}
if (result == 'y')
{
cout << "YES!" << endl;
}
else if (result == 'n')
{
cout << "NO!" << endl;
}
我的问题是,如果我输入多个无效字符,它会再次显示每个无效字符的提示,如下所示:
Do you wish to continue & overwrite the file? Y/N: abc
a
Do you wish to continue & overwrite the file? Y/N: b
Do you wish to continue & overwrite the file? Y/N: c
Do you wish to continue & overwrite the file? Y/N:
我做错了什么?
答案 0 :(得分:0)
因此,如果我的输入存储为字符串(而不是char),我就不会为输入的每个字符重复输入。另外,我的while循环条件应该是AND而不是OR:
string result = "";
while (result != "y" && result != "n")
{
cout << "Do you wish to continue & overwrite the file? Y/N: ";
cin >> result;
transform(result.begin(), result.end(), result.begin(), ::tolower);
}
if (result == "y")
{
cout << "YES!" << endl;
}
else if (result == "n")
{
cout << "NO!" << endl;
}