假设我有以下 poc 代码:
const string& a = "hello";
string b = "l";
if(a.at(2) == b)
{
// do stuff
}
据我所知,没有匹配这些操作数的运算符“==”。并且,修复它的方法是将变量 a 的值转换为 'hello'(而不是双引号)作为 char。
但是,如果我别无选择,只能按照代码所示执行比较怎么办。是否可以?您能否就此问题提供任何指导或建议。
感谢您的回复。
最佳答案
您正在比较一个 char
(具体来说是一个 const char
)和一个 std::string
,其中不存在( operator==
) 的重载比较运算符。
您有一些选择:
(1) 比较b
的第一个字符和你想比较的字符
string b = "l";
string a = "hello";
if(a[2] == b[0]) { /* .. */ }
(2) 将a[2]
转换为std::string
string b = "l";
string a = "hello";
if(string{a[2]} == b) { /* .. */ }
(3) 设b
为char
char b = 'l';
string a = "hello";
if(a[2] == b) { /* .. */ }
另外,你不应该像这样构造一个字符串对象
const string& a = "hello";
除非你真的想创建对另一个字符串对象的引用,例如
string x = "hello";
const string& a = x;
关于c++ - 如何在 C++ 中将字符串与 const 字符串进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47916094/