为什么无论大小写,程序都不会输出 true?

Why isn't the program outputting true regardless of case?

我的作业要求我一直接受用户的输入并输出它是否是回文,直到输入DONE这个词。 此外,像 Bob 这样的词必须输出 true,因为我们必须忽略大小写 (upper/lower.)

这是我第一次使用 C++。

#include <iostream>
#include <string>
using namespace std;
int main()
{
string wordInput;
while (wordInput != "DONE")
{ 
    cout << "Please enter a word: ";
    cin >> wordInput;
    int wordLength = wordInput.length();
    int wordHalf = (wordLength / 2);
    bool flag = false;
    for (int i = 0; i <wordHalf; i++)
    {
        if (tolower((wordInput[i]) == tolower(wordInput[wordLength-1-i])))
        {
            flag = true;
        }
        else
        {
            flag = false;
            break;
        }
    }
    if (flag == true)
    {
        cout << "true"<<endl;
    }
    else
    {
        cout << "false"<<endl;
    }
}   
return 0;   
}

这可能与 'wordInput' 被声明了两次有关,一次是在 while 循环之前,一次是在其中。它混淆了 while 循环条件正在查看的内容。

您的字词未被正确识别的问题来自这一行:

if(tolower((wordInput[i]) == tolower(wordInput[wordLength-1-i])))

如果你仔细看,你把括号放错了。试试这个:

if(tolower(wordInput[i]) == tolower(wordInput[wordLength-1-i]))