c++ - 通过非 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);
解决方案
是的,这是明确定义的。这是提供对原始数据的可变访问的预期目的。
推荐阅读
- android - 即使启用 javascript,Android WebView 也不会加载 javascript 文件或函数
- javascript - 如果由于提升变量应该在我的情况下是函数的范围之上,为什么函数首先返回?
- javascript - 为自定义类创建上下文
- php - 我已经在 php 中编写了 api,我再次在 php 中使用我的 api,但是删除方法不起作用
- javascript - 为什么在浏览器中打开 index.html 与在节点服务器上打开 index.html 时 `this` 不同?
- javascript - 电子邮件脚本主题设置
- c# - 如何在 Windows 窗体 c# 中隐藏文本框光标
- java - Couchbase:文档更新期间出现 NOT_STORED 错误
- vuejs2 - Vue - 使用 v-model 和 vuex
- java - Azure 应用程序网关 cookie 是否可以替换为应用程序 cookie?