【发布时间】:2021-07-10 07:47:54
【问题描述】:
我正在解析二进制网络数据,我希望尽可能减少分配过程。但现在我意识到有 2 个非常相似的概念可能对我的情况都足够好,它们是 std::basic_string_view<T> 和 std::span<T>。
所以我想知道。这两者之间有什么区别,使用其中一个有什么优势?一个明显的区别是可用性,std::basic_string_view 已经在 C++17 中,而 std::span 是 C++20(但您可以使用“指南支持库”中的旧标准)。但是还有别的吗?应该这样做,否则它们都不会成为标准。
【问题讨论】:
-
string_view是span<char const>并且有很多字符串“便利功能” -
正如@dyp 提到的,
string_view的 API 的操作类似于std::string提供的操作,即 substr、copy、find 等。 -
vector和basic_string存在的原因相同 -
@AlanBirtles
basic_string至少保证空终止。string_view不是这样(是否计划使用以 null 结尾的 string_view?)
标签: c++ string-view guideline-support-library