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

问题描述 投票:0回答:2

假设我有以下poc代码:

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

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

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

但是,如果我别无选择,只能执行代码中显示的比较。可能吗?能否请您就此问题提供任何指导或建议。

您的回复表示赞赏。

c++ string comparison const-string
2个回答
1
投票
const string& a = "hello";
string b = "l";

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

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


4
投票

你正在比较一个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;
© www.soinside.com 2019 - 2024. All rights reserved.