在 c++11 的
这里发生了什么?为什么
array
,string
和 vector
中都有 data
方法,它们的作用是:
对于所有适用的容器,该方法提供了可变和返回指向底层数组的指针,该数组用作元素存储。即使容器为空,范围 [
data()
;data() + size()
) 也始终是有效范围。[Source]
const
版本,例如:T* vector<T>::data();
const T* vector<T>::data() const;
所有适用的容器,即除了 string
,它只提供了const
版本:
const char* string::data() const;
这里发生了什么?为什么
string
被短缺了,当char* string::data()
会非常有帮助时?
vector<char>
,但每次在将字符复制回string
时都感到后悔。实际上我想要的是一个带有可修改缓冲区的string
。 - Jonathan Meeconst_cast
,其中:“通过非const访问路径修改const对象,并通过非volatile glvalue引用volatile对象会导致未定义行为。” 因此,我认为我们可以说,“不,这绝对不是一个好的做法。” - Jonathan Mee