C17 新标注的 std::string_view 和创建一个 string 的引用是否有区别?

0

C17 的新标准提供了 std::string_view 和 std::wstring_view,都是为了防止过多的内存拷贝出现的,那么他们和传统的 const std::string& 又有什么区别呢?仅仅是 sv 字面量的区别吗?

ava
Margoo

2022-8-1

1

本质上来讲,这是俩东西,适用于不同的场景。

首先,std::string_view 也适用于 char [ ] 的视图,而 const std::string& 只能适用于 std::string。

其次,使用方法上有区别。例如,使用 std::string_view 你可以很方便的对字符串视图进行遍历而不需要考虑结束符问题,但你用 const std::string& 不行。std::string_view 的一些成员函数也是如此。

虽然这么说,但我个人认为,这点方便程度不足以引入新的概念,毕竟 C++ 已经够复杂了。

ava
慢羊羊

2022-8-3

技术讨论社区