C++ : recognizing lower case as correct when its stored as upper case?

标签 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;
}

最佳答案

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

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/

相关文章:

c++ - 使用 Websocketpp 时的控制台输出

php - CakePHP 2.0 对象不是数组

连接以逗号分隔的名称部分,这些名称保存在 C 中的文本文件中

javascript - 这是对总结对象数组有益的 JavaScript 重构吗?

c# - 主菜单导航/键盘输入速度太快

html - jsfiddle layout broken : wrong input size. 大小存储在哪里?

c++ - 在Linux上的C++中执行Shell命令xdotool

c# - 如何在 C# 中编码(marshal)指向一系列以 null 结尾的字符串的指针?

php - 需要将带有方括号的字段名称转换为javascript对象

c++ - 如何以灰度读入视频文件