首页 > 解决方案 > std::basic_string_view 之间的区别和 std::span

问题描述

我正在解析二进制网络数据,我想让这个过程尽可能少分配。但现在我意识到有 2 个非常相似的概念对于我的情况可能都足够好,它们是std::basic_string_view<T>std::span<T>

所以我想知道。这两者之间有什么区别,使用其中一个有什么优势?一个明显的区别是可用性,std::basic_string_view已经在 C++17 中,而std::span在 C++20 中(但您可以使用“指南支持库”中的旧标准)。但是还有别的吗?它应该,因为否则他们不会都将其纳入标准。

标签: c++string-viewguideline-support-library

解决方案


string_view旨在用于文本数据。span旨在与任意对象数组一起使用。虽然两者都不完全适合二进制数据,但string_view显然不适用。


推荐阅读