如何在 C++ 中将字符串与 const 字符串进行比较

How to compare a string to a const string in C++

假设我有以下 poc 代码:

const string& a = "hello";
string b = "l";

if(a.at(2) == b)
{
 // do stuff
} 

我了解到没有匹配这些操作数的运算符“==”。并且,修复它的方法是将变量 a 的值转换为 'hello'(而不是双引号)作为 char。

但是,如果我别无选择只能按照代码所示执行比较怎么办。可能吗?您能否就此问题提供任何指导或建议。

感谢您的回复。

const string& a = "hello";
string b = "l";

if (a[2] == b[0])
{
    // do stuff
}

a.at(2) 不是字符串。什么时候做b到b[0]的问题解决。

您正在比较 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;