string s; bool b [] = {s ==“”,s == s.c_str(),s.c_str()==“”}};为什么b [2]为假?

问题描述 投票:0回答:1
string s;
bool b[] = {s=="",  s==s.c_str(),  s.c_str()==""};
sets
b[] = {true, true, false};

为什么b [2]为假?

如果A == B并且A == C不应暗示B == C吗?

c++ stdstring
1个回答
4
投票

在此表达式中

s.c_str()==""

比较两个指针(地址)。第一个指针是s.c_str()返回的指针,第二个指针是字符串文字""的最远字符(确定为零字符)的指针。

很明显地址不同。

关于这两个表达式

s==""

s==s.c_str()

然后比较字符串,因为标准类std :: string重载了右操作数的运算符==。

© www.soinside.com 2019 - 2024. All rights reserved.