std :: string :: c_str和std :: string :: data有什么区别?

时间:2009-10-07 21:43:58

标签: c++ stdstring c-str

为什么我要通过std::string::data()致电std::string::c_str()?当然,这里标准的疯狂有一些方法......

3 个答案:

答案 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());
    }

所以他们回归同样的事情。