可能重复:
字符串c_str()与data()
我strncpy(dest, src_string, 32)
用来转换std::string
为char[32]
使我的C++类与遗留的C代码一起使用.但是std :: string的c_str()
方法总是返回一个以null结尾的字符串吗?
Mik*_*our 23
std :: string的c_str()方法总是返回以null结尾的字符串吗?
是.
它的规格是:
返回:一个指针
p
,p + i == &operator[](i)
用于每个i
in[0,size()]
.
请注意,指定的范围i
是关闭的,因此这size()
是一个有效的索引,指的是字符串末尾之后的字符.
operator[]
由此指定:
返回:
*(begin() + pos)
ifpos < size()
,否则引用T
具有value 的类型的对象charT()
在的情况下std::string
,这是一个别名std::basic_string<char>
,这样charT
就是char
,一个值构造的char
具有零值; 因此,结果指向的字符数组std::string::c_str()
是零终止的.