C++将char与字符串文字进行比较

Mik*_*e P 1 c++ compare char

在这里开始程序员......

我正在为我的计算机科学课写一个非常简单的程序,我遇到了一个我想更多了解的问题.这是我的代码:

#include <iostream>

using namespace std;

int main(int argc, const char * argv[])
{
    char courseLevel;

    cout << "Will you be taking graduate or undergraduate level courses (enter 'U'"
            " for undergraduate,'G' for graduate.";
    cin >> courseLevel;

    if (courseLevel == "U")
    {
        cout << "You selected undergraduate level courses.";
    }

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的if语句收到两条错误消息:1)未指定与字符串文字进行比较的结果(改为使用strncmp).2)指针和整数之间的比较('int'和'const char*').

我似乎已经通过将我的U封在单引号中解决了这个问题,或者程序至少仍然有效.但是,正如我所说,我只是想了解为什么我会收到错误,以便我能更好地理解我正在做的事情.

Jon*_*art 5

您需要使用单引号.

在C,(和许多其他语言)中,字符常量是包含在单引号中的单个字符1:

'U'
Run Code Online (Sandbox Code Playgroud)

虽然字符串文字是任何数字包含在双引号字符:

"U"
Run Code Online (Sandbox Code Playgroud)

您声明courseLevel为单个字符:char courseLevel;因此您只能将其与另一个字符进行比较char.

当你这样做时if (courseLevel == "U"),左边是a char,而右边是const char*- 指向char该字符串文字中 第一个的指针.你的编译器告诉你这个:

指针和整数之间的比较(' int'和' const char*')


所以你的选择是:

if (courseLevel == 'U')       // compare char to char
Run Code Online (Sandbox Code Playgroud)

或者,为了举例:

if (courseLevel == "U"[0])    // compare char to first char in string
Run Code Online (Sandbox Code Playgroud)
  1. 注意完整性:您可以使用多个字符常量:

    int a ='abcd'; // GCC中的0x61626364

但这肯定不是你想要的.