[zz]std::string 和 c 的字符串
char *a = NULL 与 char *str = "Hello" 是有区别的
string初始化需要用后面一个
String s=null;和 String s="" 效果是一样的,都将string初始化为空
----------------------------------------------------------------我是邪恶的分割线----------------------------------------------------------------
今天遇到了
terminate called after throwing an instance of 'std::logic_error'
what(): basic_string::_S_construct NULL not valid
已放弃
原因在于没搞清, char *型的变量和指向 c 风格的字符串指针的区别.
char *cp = NULL; cp是一个char*变量
char *str = "Hello"; str是一个指向 c 风格的字符串指针.
std::string 的构造函数需要的是一个 c 风格的字符串指针(要求以字符 null 结尾), 而不是一个char *的变量. 所以运行时出了上述错误.
另外, 很多 c 标准函数, 函数明确说明, 需要一个 c 风格的字符串. 虽然char * 和指向 c 风格的字符串指针的代码看起来都是 char *, 但是含义上有本质的区别.