std::string::c_str() 是否总是返回一个以 null 结尾的字符串

Does std::string::c_str() always return a null-terminated string?

本文关键字:一个以 返回 null 结尾 字符串 是否 string str std      更新时间:2023-10-16

可能的重复项:
字符串 c_str() 与数据()

我使用 strncpy(dest, src_string, 32)std::string转换为 char[32],以使我的C++类使用遗留的 C 代码。但是 std::string 的 c_str() 方法是否总是返回一个以 null 结尾的字符串?

std::string 的 c_str() 方法是否总是返回以 null 结尾的字符串?

是的。

它的规格是:

返回:p指针,以便[0,size()]中的每个i p + i == &operator[](i)

请注意,为 i 指定的范围是封闭的,因此 size() 有效的索引,指的是字符串末尾之后的字符。

operator[]指定如下:

返回:如果pos < size(),则*(begin() + pos),否则引用值为 charT()T 类型的对象的引用

std::string 的情况下,它是std::basic_string<char>的别名,因此charTchar,值构造char的值为零;因此std::string::c_str()结果指向的字符数组以零终止。

c_str返回一个"C 字符串"。C 字符串始终以空字符结尾。这是 C 标准。

空终止字符串。

据此,答案是肯定的。

相关文章: