我使用strncpy(dest, src_string, 32)
将std::string
转换为char[32]
,以使我的C ++类可以使用旧版C代码。但是std :: string的c_str()
方法总是返回一个以空字符结尾的字符串吗?
答案 0 :(得分:23)
std :: string的c_str()方法总是返回以null结尾的字符串吗?
是
它的规格是:
返回:指针
p
,p + 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标准。
答案 2 :(得分:2)
根据this,答案是肯定的。