std :: string以'/ 0'结尾?

时间:2013-11-28 00:48:22

标签: c++

char *pt = "hello";
std::string str = "hello";

str是否也以'/0'结尾(空终止)?

3 个答案:

答案 0 :(得分:3)

实现定义了std::string是否以空值终止。

定义后str的实际内容:

std::string str = "hello";

是字符'h''e''l''l''o',其size仅等于5个字符。

答案 1 :(得分:2)

str管理的缓冲区可以为空终止,但不一定。

答案 2 :(得分:0)

str.c_str()将为您提供const char*,它指向一个以null结尾的连续缓冲区(就像您的"hello"字符串文字一样)。

但要注意使用&str[0],因为它不能保证这指向一个连续的缓冲区,也不保证这个缓冲区是以空值终止的。