我有一个一维数组的正确答案,但它们以大写形式存储在 txt 文件中。我想接受用户输入,但如果他回答小写,我希望程序接受他的小写或大写答案。我在正确的轨道上吗?另外,我测试它的有效响应(a-d 或 A-D)是否不起作用..还有什么我可以尝试的吗?
char answers[x];
cin >> user_guess;
while (user_guess != "a" || "b" || "c" || "d" || "A" || "B" || "C" || "D") //doesnt work?
{
cout<< "Please correctly identify your answer." << endl;
cin >> user_guess;
}
if (islower (user_guess) )
{
toupper (user_guess) )
}
if (user_guess != answers[x])
{
cout << "incorrect! << endl;
}
else
{
cout << "correct!" << endl;
}
最佳答案
您对正确选择的测试不起作用,因为这不是 ||
的工作方式。你需要的是这样的:
while (user_guess != "a" && user_guess != "b" && user_guess != "c" && user_guess != "d"
user_guess != "A" && user_guess != "B" && user_guess != "C" && user_guess != "D") {
此外,对非小写字符调用 toupper()
也没有坏处。所以你可以这样做:
if (toupper(user_guess) != answers[x]) {
如果在从 cin
读取 user_guess
后立即将其转换为大写,那么你们都可以缩短“有效猜测”测试(只需测试针对大写答案),并在针对 answers[x]
的测试中省略 toupper()
。
关于C++ : recognizing lower case as correct when its stored as upper case?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9204308/