我已经阅读了几个地方,c_str()和data()(在STL和其他实现中)之间的区别c_str()是总是空终止而data()不是.据我在实际实现中看到的,他们要么做同样的事情,要么做data()电话c_str().
我在这里错过了什么?在哪种情况下使用哪一个更正确?
在C++ 11 array,string和vector所有得到了data方法,该方法:
返回指向用作元素存储的基础数组的指针.指针是范围[
data();data() + size())即使容器为空,也始终是有效范围.[ 来源 ]
此方法const以所有适用容器的可变和版本提供,例如:
T* vector<T>::data();
const T* vector<T>::data() const;
Run Code Online (Sandbox Code Playgroud)
所有适用的容器,也就是除了string其只提供const版本:
const char* string::data() const;
Run Code Online (Sandbox Code Playgroud)
这里发生了什么?为什么会被string贬低,何时char* string::data()会如此有用?