簡體   English   中英

gsl :: string_span和std :: string_view有何區別?

[英]How do gsl::string_span and std::string_view differ?

據我所知, gsl::string_spanstd::string_view似乎具有基本相同的使用理由。 確實是這樣嗎? 如果是這樣,它們實際上是否相同? 如果不是,它們有何不同?

相關問題: gsl :: string_span的目的是什么?

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卻允許非const訪問。 例如:

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

還要注意,即使span本身是const, gsl::string_span也是如何允許非const訪問的。 換句話說, gsl::string_span不會傳播gsl::string_span 這與std::spangsl::span

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM