假设我有以下 poc 代码:
const string& a = "hello";
string b = "l";
if(a.at(2) == b)
{
// do stuff
}
我知道没有与这些操作数匹配的运算符“==”。并且,修复它的方法是将变量 a 的值转换为 'hello'(而不是双引号)作为 char。
但是,如果我别无选择,只能按照代码所示进行比较,该怎么办。可能吗?您能否就这个问题提供任何指导或建议。
感谢您的回复。
假设我有以下 poc 代码:
const string& a = "hello";
string b = "l";
if(a.at(2) == b)
{
// do stuff
}
我知道没有与这些操作数匹配的运算符“==”。并且,修复它的方法是将变量 a 的值转换为 'hello'(而不是双引号)作为 char。
但是,如果我别无选择,只能按照代码所示进行比较,该怎么办。可能吗?您能否就这个问题提供任何指导或建议。
感谢您的回复。
您正在比较 a char
(具体来说是 a const char
)和 a 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;
const string& a = "hello";
string b = "l";
if (a[2] == b[0])
{
// do stuff
}
a.at(2) 不是字符串。b to b[0] 什么时候解决问题。