string s;
bool b[] = {s=="", s==s.c_str(), s.c_str()==""};
集合
b[] = {true, true, false};
为什么b[2]
是false?
如果是A==B
和A==C
,这是否意味着B==C
发布于 2019-10-17 16:58:09
在此表达式中
s.c_str()==""
有两个比较的指针(地址)。第一个是由s.c_str()
返回的指针,第二个是指向字符串文字""
的第一个字符(终止为零字符)的指针。
很明显,地址是不同的(还请记住,字符串文字具有静态存储持续时间)。
为了得到预期的结果,你应该改写
std::strcmp( s.c_str(), "" ) == 0
至于这两个表达式
s==""
和
s==s.c_str()
然后是比较字符串,因为标准类std::string重载了右操作数的运算符==。
https://stackoverflow.com/questions/58437446
复制相似问题