之间有什么区别std::string::c_str和性传播疾病::string::数据?[重复]

StackOverflow https://stackoverflow.com/questions/1534399

  •  20-09-2019
  •  | 
  •  

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

为什么我想要叫 std::string::data()std::string::c_str()?当然有一些方法的标准的疯狂在这里...

有帮助吗?

解决方案

c_str()保证NUL终止。数据()没有。

其他提示

c_str()返回的指针到的数据与NUL字节所附的所以你可以使用的返回值作为"C string"。

数据()返回的指针到的数据没有任何修改。

使用c_str()如果您使用的假设一串是NUL终止(例如任何功能的书面来处理C strings)。

现在MS STL10.0似乎没有任何区别,正如我看到这个标题:

...\Visual Studio10.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());
    }

因此,他们的返回同样的事情。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top