为什么我要通过std::string::data()
致电std::string::c_str()
?当然,这里标准的疯狂有一些方法......
答案 0 :(得分:18)
c_str()保证NUL终止。 data()没有。
答案 1 :(得分:5)
c_str()返回一个指向数据的指针,并附加一个NUL字节,这样你就可以将返回值用作“C字符串”。
data()返回指向数据的指针而不做任何修改。
如果您使用的代码假定字符串是NUL终止的(例如为处理C字符串而编写的任何函数),请使用c_str()。
答案 2 :(得分:1)
现在在MS STL 10.0中似乎没有任何区别,正如我在标题中看到的那样:
... \ Microsoft Visual Studio 10.0 \ VC \ include \ xstring
const _Elem *c_str() const
{ // return pointer to null-terminated nonmutable array
return (_Myptr());
}
const _Elem *data() const
{ // return pointer to nonmutable array
return (c_str());
}
所以他们回归同样的事情。