5

据我所知,gsl::string_span似乎std::string_view有基本相同的使用理由。真的是这样吗?如果是这样,它们实际上是否相同?如果不是 - 它们有何不同?

相关问题:`gsl::string_span` 的目的是什么?

4

1 回答 1

2

怎么做gsl::string_spanstd::string_view区别?

它们的可用方式有一个相当明显的区别,但我会说它是因为它很重要:gsl::string_span需要使用第三方库,而std::string_view它是标准的 C++ 类型。另一方面,提供的库gsl::string_span支持 C++14,而 std::string_view需要 C++17。

一个主要的设计差异是std::string_view字符串的 const 视图,并且不提供修改查看字符串的任何方式,同时gsl::string_span允许非常量访问。例如:

constexpr iterator gsl::string_span::begin() const noexcept
          ^^^^^^^^ note non-const iterator   ^^^^^ also note this

gsl::string_span另请注意,即使跨度本身是 const,也如何允许非常量访问。换句话说,gsl::string_span不传播常量。std::span这与和相同gsl::span

于 2019-07-01T00:35:07.113 回答