C17 的新标准提供了 std::string_view 和 std::wstring_view,都是为了防止过多的内存拷贝出现的,那么他们和传统的 const std::string& 又有什么区别呢?仅仅是 sv 字面量的区别吗?
举报
C17 新标注的 std::string_view 和创建一个 string 的引用是否有区别?
举报
本质上来讲,这是俩东西,适用于不同的场景。
首先,std::string_view 也适用于 char [ ] 的视图,而 const std::string& 只能适用于 std::string。
其次,使用方法上有区别。例如,使用 std::string_view 你可以很方便的对字符串视图进行遍历而不需要考虑结束符问题,但你用 const std::string& 不行。std::string_view 的一些成员函数也是如此。
虽然这么说,但我个人认为,这点方便程度不足以引入新的概念,毕竟 C++ 已经够复杂了。