string对象初始化出错

mylq 2016-06-13 12:27:24
我想将string对象初始化为空,string poing=NULL;
编译可以通过,但是无法运行,报错:
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct null not valid
查阅得std::string 的构造函数需要的是一个 c 风格的字符串指针(要求以字符 null 结尾),NULL好像是0吧,一个宏定义,用来防止指针悬空,一般用来和指针做比较或者赋给指针。
既然可以赋给指针,而string构造函数也需要指针,为什么不能直接用来初始化?
...全文
101 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
mylq 2016-06-13
  • 打赏
  • 举报
回复
引用 4 楼 zhao4zhong1 的回复:
NULL即0 ""即'\0' 但以上两行不是一回事!
好的,了解,谢赵4老师
赵4老师 2016-06-13
  • 打赏
  • 举报
回复
NULL即0 ""即'\0' 但以上两行不是一回事!
mylq 2016-06-13
  • 打赏
  • 举报
回复
引用 1 楼 lunat 的回复:
空是什么意思?里面没有字符? string poing; 这样就是空的 poing.empty()返回true。 string不同于指针,你要放弃你之前的char *的指针想法。 NULL完全不是以NULL结尾的字符串,"\0"这个才是你想要的?
NULL完全不是以NULL结尾的字符串,这样啊,那么s.empty()返回true的时候可以用s==null为真来判断么,还是用!s为真来判断,还是其他?
jiqiang01234 2016-06-13
  • 打赏
  • 举报
回复
std::string是一个字符容器,不以'\0'结尾,可以包含任意的字符。所以,如果初始化为空,可以有几种方法(不限于例子中的方法) 1、std::string s; 2、std::string s=""; 3、std::string s; s.clear();
lunat 2016-06-13
  • 打赏
  • 举报
回复
空是什么意思?里面没有字符? string poing; 这样就是空的 poing.empty()返回true。 string不同于指针,你要放弃你之前的char *的指针想法。 NULL完全不是以NULL结尾的字符串,"\0"这个才是你想要的?

64,650

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧