Chinaunix首页 | 论坛 | 博客
  • 博客访问: 314304
  • 博文数量: 45
  • 博客积分: 2079
  • 博客等级: 上尉
  • 技术积分: 464
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-03 16:57
文章分类

全部博文(45)

文章存档

2015年(1)

2013年(1)

2012年(9)

2011年(2)

2010年(32)

分类:

2010-10-29 14:09:54

写C代码写习惯了,使用C++时,对字符串操作要格外注意。今天,一个小小的疏忽又导致折腾了一会。
错误代码如下:
    char szStr[256] = {0};
        sprintf(szStr, "%s",whatever);
        m_str =  string(szStr);
printf("------str is %s",m_str);
报错如下:
WorkThread.cpp:144: warning: cannot pass objects of non-POD type `struct std::string' through `...'; call will abort at runtime
WorkThread.cpp:144: warning: format argument is not a pointer (arg 2)
如果忽视warning,运行会出现Segmentation fault。
修改:
将printf那行改为C++风格打印即可:
cout<<"---------str is"<
总结:
C与C++字符串处理存在差异,C的字符串自己申请数组,自己拼装,直接%s打印即可;C++将字符串封装成类,使用可以说更加方便,但要注意别用混。
阅读(3113) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~