首页 > 解决方案 > 通过非 cont c++17 data() 重载修改 std::string 内部缓冲区

问题描述

我刚刚看到 c++17 重载了一个非常量 data() 方法,即CharT* data() noexcept;并希望确保如下调用它的行为是明确定义的:

std::string str(some_size,'0');
memcpy((void*)str.data(),source,some_size);

标签: c++c++17stdstring

解决方案


是的,这是明确定义的。这是提供对原始数据的可变访问的预期目的。


推荐阅读