我有一个小问题。我一直在这里搜索,但是找不到任何东西,因此,我想比较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]|
是的,我知道它就这么简单,但是我只是找不到解决该问题的方法。
答案 0 :(得分:1)
以下是有关C / C ++和char
和C 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
。