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

标签 c++ string comparison const-string

假设我有以下 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) 设bchar

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/

相关文章:

C++:对于数组声明,&*A 不等同于 A?

c++ - C++ 中的 "query parameter"是什么?

java - 为什么一根长字符串比许多小字符串占用更多空间?

email - 匿名比较两个电子邮件地址列表

c++ - gsl::gsl_vector 与 std::vector 开销和效率

opencv - OpenCV:如何检测同一对象的两个不同图像之间的差异

c++ - 是否可以将任何类型的函数存储在一个变量中?

c++ - 使用 find_if 和 isalnum 在字符串中查找字母数字字符

python - 如何告诉 Numpy 以 UTC 而不是本地时区打印时间?

c++ - XRender 创建离屏图片