> a; //For exa-6ren">
gpt4 book ai didi

c++ - 比较字符 [C++]

转载 作者:行者123 更新时间:2023-11-28 04:27:58 25 4
gpt4 key购买 nike

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

A string literal (2.13.4) that is not a wide string literal can be converted to an rvalue of type “pointer to char”; a wide string literal can be converted to an rvalue of type “pointer to 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,而不是 char const *

因此,为了让您的代码正常工作,您只需if (a == b[0][0]) 即可比较两个 char

关于c++ - 比较字符 [C++],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53805522/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com