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

ezp*_*sso 10 c++ string

可能重复:
字符串c_str()与data()

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

Mik*_*our 23

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

是.

它的规格是:

返回:一个指针p,p + i == &operator[](i)用于每个iin [0,size()].

请注意,指定的范围i是关闭的,因此这size() 一个有效的索引,指的是字符串末尾之后的字符.

operator[] 由此指定:

返回:*(begin() + pos)if pos < size(),否则引用T具有value 的类型的对象charT()

在的情况下std::string,这是一个别名std::basic_string<char>,这样charT就是char,一个值构造的char具有零值; 因此,结果指向的字符数组std::string::c_str()是零终止的.


Lew*_*rin 12

c_str返回"C字符串".C字符串总是以空字符结尾.这是C标准.

空终止字符串.