std::string 和 c 的字符串

std::string 的初始化碰到一个问题, 拿一个 char* 的指针当构造函数的指针, 运行时出现:

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 *, 但是含义上有本质的区别.

发表评论

电子邮件地址不会被公开。 必填项已用*标注