据我所知,gsl::string_span
和 std::string_view
似乎具有基本相同的使用原理。真的是这样吗?如果是这样,它们实际上是否相同?如果不是 - 它们有什么不同?
相关问题:What purpose does `gsl::string_span` aim at?
最佳答案
How do
gsl::string_span
andstd::string_view
differ?
它们的可用性差异相当明显,但我会说它,因为它很重要:
gsl::string_span
需要使用第三方库,而 std::string_view
是标准的 C++ 类型。另一方面,图书馆提供 gsl::string_span
支持 C++14,而 std::string_view
需要 C++17。一个主要的设计差异是
std::string_view
是字符串的常量 View ,不提供任何修改查看字符串的方法,而 gsl::string_span
确实允许非常量访问。例如:constexpr iterator gsl::string_span::begin() const noexcept
^^^^^^^^ note non-const iterator ^^^^^ also note this
还要注意如何
gsl::string_span
即使跨度本身是常量,也允许非常量访问。换句话说,gsl::string_span
不传播常数。这与 std::span
相同和 gsl::span
.
关于string-view - gsl::string_span 和 std::string_view 有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53051430/