0

我有一个小问题。我一直在这里搜索,但找不到任何东西,所以,我想比较 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]|

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

4

1 回答 1

1

以下是有关 C/C++ 和charandC string的一些基础知识。

字符串文字,如“a”或“b”是类型const char [](或者char const [],它们是相同的)并且它不是 a char,但标准还说,

不是宽字符串文字的字符串文字(2.13.4)可以转换为“pointer to char”类型的右值;宽字符串文字可以转换为“指向 wchar_t 的指针”类型的右值</p>

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

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

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

因此,为了让您的代码正常工作,您可以if (a == b[0][0])将两个chars 进行比较。

于 2018-12-16T19:13:47.517 回答