string_view vs string &
标准
string_view 在C++17 才被支持
性能方面
https://stackoverflow.com/questions/40127965/how-exactly-is-stdstring-view-faster-than-const-stdstring
string_view 在某些情况下可以避免内存分配,比如这个例子:
1 |
|
如果foo 函数接收的参数类型是 const std::string & ,那么在传递参数的时候需要先构造出一个string,而 string_view不需要
除此之外,更重要的场景是需要用到子串时,string_view的substr 是在原字符串的基础上读取,而string 的 substr 是返回一个新的字符串
生存周期方面
string_view 的生存周期是和原 string 一样的,因此在局部string不要能用在string_view上
空字符
string_view 尾部不包含空字符,除非是用字符常量构造的;而 string 尾部是含有空字符的,虽然size 不包含空字符位
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!