【发布时间】:2018-11-22 19:42:58
【问题描述】:
我无法理解从 string.c_str() 返回的 char * 是否指向同一个缓冲区(并且不进行任何复制)它是如何以 null 终止的?该函数是否在字符串末尾添加空终止符?如果缓冲区没有任何额外的字节来存储它会发生什么?
谢谢。
【问题讨论】:
-
C++ 字符串始终以空值结尾,参见。 eel.is/c++draft/string.classes#basic.string-4
-
缓冲区有一个额外的字节来保存终止符,总是。理论上它只能在您要求查看时存储终止符值,但实际上它始终存在。
-
如果空终止符始终存在,这意味着 string.data() 与 string.c_str() 完全相同?
标签: c++ string stdstring null-terminated c-str