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

时间:2012-10-02 20:29:55

标签: c++ string

  

可能重复:
  string c_str() vs. data()

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

3 个答案:

答案 0 :(得分:23)

  

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

它的规格是:

  

返回:指针pp + i == &operator[](i)中每个i的{​​{1}}。

请注意,为[0,size()]指定的范围已关闭,因此i 是有效索引,指的是字符串末尾的字符。

因此指定了

size()

  

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

如果charT()std::string的别名,std::basic_string<char>charT,则值char的值为零;因此char的结果指向的字符数组是零终止的。

答案 1 :(得分:12)

c_str返回“C字符串”。 C字符串总是以空字符结尾。这是C标准。

Null terminating strings.

答案 2 :(得分:2)

根据this,答案是肯定的。