我遇到了一个小问题。我一直在这里搜索,但找不到任何东西,所以,我想比较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++、char
和C 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
。