我正在解析二进制网络数据,并希望尽可能减少内存分配。但现在我意识到有两个非常相似的概念,它们都可能足够适用于我的情况,那就是
所以我想知道这两者之间的区别,是否有一种比另一种更优?一个明显的区别是可用性,在C++17中已经有了
std::basic_string_view<T>
和std::span<T>
。所以我想知道这两者之间的区别,是否有一种比另一种更优?一个明显的区别是可用性,在C++17中已经有了
std::basic_string_view
,而std::span
则是C++20的新特性(但您可以在老版本中使用“Guidelines Support Library”中的一个)。但还有其他方面吗?应该有,否则它们不会同时出现在标准中。
string_view
是span<char const>
,并且具有许多字符串“便利函数”。 - dypstring_view
的API具有与std :: string
类似的操作,例如substr、copy、find等。 - Mansoorvector
和basic_string
都存在。 - Alan Birtlesbasic_string
至少保证了空字符结尾。但是对于string_view
并非如此(是否计划推出空字符结尾的string_view
?)。 - dyp