char *pt = "hello";
std::string str = "hello";
str
是否也以'/0'
结尾(空终止)?
答案 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]
,因为它不能保证这指向一个连续的缓冲区,也不保证这个缓冲区是以空值终止的。