gpt4 book ai didi

C++ 写时复制子串/子数组

转载 作者:行者123 更新时间:2023-11-28 01:35:33 24 4
gpt4 key购买 nike

<分区>

我有很多文本处理(例如 xml、json、yaml),我希望所有解析的子字符串都引用输入缓冲区,而不是复制。

我在某种程度上受到了 Golang 切片的影响,它们都具有最佳大小 (ptr+len)。由于我们在 C++ 中并没有真正的 GC,因此写时复制和引用计数可能是更合适的设计。

最好,我还可以在相同的字符串/切片类下抽象出静态 C 字符串。

是否有一种解决方案可以提供所有:

  1. 在获取子字符串时避免复制。
  2. 写时复制。
  3. 用相同的类包装静态 C 字符串。
  4. 不是操作系统/编译器特定的(即 gcc 的 std::string 将不起作用)。

如果没有,实现时我还应该考虑什么? (我正在考虑使用原子操作来管理引用计数,并使用空引用计数标记 C 字符串)。

编辑:

  • std::string_view 不好,因为它不提供要求 2。
  • 特定场景:我想解析一个 json 文档而不创建许多子字符串拷贝。那么我只想更改一个字符串值。

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com