正在比较字符[C++]



我遇到了一个小问题。我一直在这里搜索,但找不到任何东西,所以,我想比较2个字符,例如:

char a;
char b[2][2] = {"a", "b"};
cin >> a; //For example I write an "a" letter here
//Then I want to compare them
if(strcmp(a, b[0]) == 0) {
cout << "True";
}

但我得到了一个错误:

error: invalid conversion from 'char' to 'const char*' [-fpermissive]|

是的,我知道,就这么简单,但我就是找不到解决这个问题的方法。

以下是关于C/C++、charC string的一些基础知识。

字符串文字,如"A"或"b",类型为const char [](或char const [],它们相同(,它不是char,但标准也规定,

不是宽字符串文字的字符串文字(2.13.4(可以转换为"pointer to char"类型的右值;宽字符串文字可以转换为类型为"pointer to wchar_t"的右值

在C/C++中,如果要比较两个char,可以只使用==运算符。如果要比较两个C字符串(字符串以null字符结尾(,可以使用strcmp(char const * a, char const * b)。这里a和b都必须是const char *。同样基于该标准,const char []可以转换为const char *

您还可以使用字符串文字来初始化字符数组,如您的示例b[2][2] = {"a", "b"}

现在b[0]的类型是char [2],并且可以转换为const char *。但在您的示例代码中,a是一个char,而不是char const *

所以为了让你的代码工作,你可以只使用if (a == b[0][0]),它将比较两个char

最新更新