C ++:当小写存储为大写时,将小写识别为正确?

时间:2012-02-09 01:42:49

标签: c++ arrays input case

我有一组正确答案的数组,但它们在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;
}

1 个答案:

答案 0 :(得分:2)

您对正确选择的测试不起作用,因为||的工作方式并非如此。你需要的是:

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]) {

如果您从user_guess读取cin之后将toupper()转换为大写,那么您可以缩短“有效猜测”测试(只需要针对大写答案进行测试),并且从针对answers[x]的测试中省略{{1}}。