有一个从 std::string
到 std::string_view
的隐式转换,它不被认为是不安全的,尽管如果程序员不小心的话,这肯定会导致许多悬空引用。
另一方面,没有使用相同的参数从 std::string_view
到 std::string
的隐式转换,而是以完全相反的方式: 因为程序员可能不小心。
C + + 有了一个原始 const char*
指针的替代品,这真是太可爱了,同时也让它变得非常混乱,简直就是一个彻头彻尾的东西:
const char*
-> std::string
: 好的std::string_view
-> std::string
: 没有std::string
= const char*
: 好的std::string
= std::string_view
: 好的std::string
+ = const char*
: 好的std::string
+ = std::string_view
: 好的const char*
+ std::string
: 好的std::string_view
+ std::string
: 没有std::string
+ const char*
: 好的std::string
+ std::string_view
: 没有我是漏掉了什么,还是这一切都是无稽之谈?
最后,如果没有使其类似于 const char*
的所有关键部分,这个字符串视图有多大用处?为什么要把它整合到 Stdlib的生态系统中,而不做最后一步来完成它呢?毕竟,如果我们需要一个表示字符串片段的对象,我们可以编写自己的对象。事实上,很多图书馆在几年前就已经这样做了。制定标准的全部意义就是让它对于最广泛的用例是有用的,不是吗?
他们会在 C + + 23中修复这个吗?