`gsl::string_span` 的目的是什么?
What purpose does `gsl::string_span` aim at?
在阅读 Microsoft's implementation of Cpp Core Guidelines 期间,我 运行 遇到了两个问题:
- 为什么在
gsl::span
已经运行良好的情况下提供 gsl::string_span
?
- 为什么在
std::string
自 C++11 起已保证以 null 终止的情况下提供 gsl::zstring_span
?
任何情况下的说明将不胜感激。
span("Hi")
是 {'H', 'i', '[=11=]'}
而 string_span("Hi")
是 {'H', 'i'}
。 string_span
检查终止空字符并且不将其包含在跨度中。
string
是拥有而 span 不是,所以比较它们就是比较苹果和橘子。 zstring_span
是一个跨度,其约束条件是最后一个字符是空字符。 span
和 string_span
都没有这个限制。
在阅读 Microsoft's implementation of Cpp Core Guidelines 期间,我 运行 遇到了两个问题:
- 为什么在
gsl::span
已经运行良好的情况下提供gsl::string_span
? - 为什么在
std::string
自 C++11 起已保证以 null 终止的情况下提供gsl::zstring_span
?
任何情况下的说明将不胜感激。
span("Hi")
是{'H', 'i', '[=11=]'}
而string_span("Hi")
是{'H', 'i'}
。string_span
检查终止空字符并且不将其包含在跨度中。string
是拥有而 span 不是,所以比较它们就是比较苹果和橘子。zstring_span
是一个跨度,其约束条件是最后一个字符是空字符。span
和string_span
都没有这个限制。