比较字符[C ++]

时间:2018-12-16 19:04:35

标签: c++ arrays char

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

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

1 个答案:

答案 0 :(得分:1)

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

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

  

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

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

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

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

因此,为了使代码正常工作,您可以if (a == b[0][0])来比较两个char