什么是的std :: string :: c_str和的std :: string ::数据之间的

2019-08-17 12:05发布

这个问题已经在这里有一个答案:

  • 串c_str()对数据() 6个答案

为什么我会永远想调用std::string::data()std::string::c_str() 当然有一些方法来这里的标准的疯狂......

Answer 1:

c_str()保证NUL终止。 数据()不。



Answer 2:

c_str()返回一个指向数据的指针与所附因此可以使用的返回值作为“C字符串” a NUL字节。

数据()返回一个指针数据,而无需任何修改。

使用c_str()如果您使用的代码假定一个字符串是NUL终止(书面处理C字符串,例如任何功能)。



Answer 3:

现在,在MS STL 10.0那里似乎没有什么区别,因为我看到这个标题:

... \微软的Visual Studio 10.0 \ VC \包括\ 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());
    }

于是他们返回同样的事情。



文章来源: What's the difference between std::string::c_str and std::string::data? [duplicate]