打印

字符串问题

[复制链接]
1016|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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"之所以能比较 , 是因为重载了==操作符 , 在里面对字符串进行了比较处理

使用特权

评论回复
5
秋天落叶| | 2012-4-19 20:33 | 只看该作者
1. 比较的是两个常量"abc"的地址是否一致,这样的情况两处"abc"的地址是一样的
2. string类重载了==,所以可以用==来比较两个字符串的类容是否相同
3. 比较的是变量s.c_str()和常量"abc"的地址,两个显然不同

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

304

主题

2313

帖子

0

粉丝