阅读期间Microsoft's implementation的Cpp Core Guidelines ,我遇到两个问题:
- 为什么在
gsl::span
已经运行良好的情况下还要提供gsl::string_span
? - 自 C++11 起,为什么要提供
gsl::zstring_span
,而std::string
已保证以 null 终止?
任何有说明的情况都将受到高度赞赏。
最佳答案
-
span("Hi")
是{'H', 'i', '\0'}
而string_span("Hi")
是{'H', 'i'}
。string_span
检查终止空字符并且不将其包含在范围中。 -
string
是拥有,而跨度不是,所以比较它们就像比较苹果和橘子。zstring_span
是一个范围,其约束是最后一个字符为空字符。两者都不是span
也不string_span
有这个限制。
关于c++ - `gsl::string_span`的目的是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49348933/