Code Bye

string对象初始化出错

本人想将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构造函数也需要指针,为什么不能直接用来初始化?
解决方案

15

空是什么意思?里面没有字符?
string poing;
这样就是空的 poing.empty()返回true。
string不同于指针,你要放弃你之前的char *的指针想法。
NULL完全不是以NULL结尾的字符串,”\0″这个才是你想要的?

10

std::string是一个字符容器,不以”\0″结尾,可以包含任意的字符。所以,假如初始化为空,可以有几种方法(不限于例子中的方法)
1、std::string s;
2、std::string s=””;
3、std::string s;
s.clear();

15

NULL即0
“”即”\0”
但以上两行不是一回事!

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明string对象初始化出错