字符串问题

[复制链接]
 楼主| sinadz 发表于 2012-4-19 18:14 | 显示全部楼层 |阅读模式
1:
  "abc"=="abc" //true,这时 "abc"应该说hiC风格字符串类型的
2:
  string s("abc");
  s=="abc" //true,此时C风格字符串可以转换为string类型的,也对
3:
  string s("abc");
  (s.c_str())=="abc" //为什么这地方就出错了呢?
无冕之王 发表于 2012-4-19 18:24 | 显示全部楼层
1和3的比较原理是一致的,都是比较字符串地址。
yybj 发表于 2012-4-19 18:32 | 显示全部楼层
c 风格字符串比较不要用==,用==大部分情况都是错误的。
c++的 string重载了operator==,所有可以用
而3中,c_str()是把string转换成 c风格的字符串,只能用strcmp
类似
char str[]="abc";
str=="abc"一样。
xsgy123 发表于 2012-4-19 20:26 | 显示全部楼层
这种字符串的比较最好不用这种形式,用strcmp ,string str="abc";  
str=="abc"之所以能比较 , 是因为重载了==操作符 , 在里面对字符串进行了比较处理
秋天落叶 发表于 2012-4-19 20:33 | 显示全部楼层
1. 比较的是两个常量"abc"的地址是否一致,这样的情况两处"abc"的地址是一样的
2. string类重载了==,所以可以用==来比较两个字符串的类容是否相同
3. 比较的是变量s.c_str()和常量"abc"的地址,两个显然不同
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

304

主题

2313

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部