在C++17中,C++标准库引入了一个特殊的字符串类:std::string_view, 它能让我们像处理字符串一样处理字符序列,而不需要为它们分配内存空间。 也就是说,std::string_view类型的对象只是引用一个外部的字符序列, 而不需要持有它们。因此,一个字符串视图对象可以被看作字符串序列的引用。 使用字符串视图的开销很小,...
C++中的string_view C++17标准库里面引入了轻量级的只读字符串表示类型string_view,用来替代const char*和const string&,在传入函数的时候减小内存开销(因为string_view类只包含字符串的指针和字符串的长度值,开销小于string类型)。 string_view定义在头文件<string_view>中。 具体来说,C++17里面引入了模板类basic_str...
std::string_view是C++17引入的一个轻量级类,用于表示对字符串的非拥有引用。它允许开发者以高效的方式传递和操作字符串,而无需复制或分配内存。std::string_view本质上是一个指向字符数组的指针和长度的组合,因此它可以引用任何以空字符结尾的字符数组(C风格字符串)、std::string或其他任何符合要求的字符序列。 示...
<string_view> <strstream> <system_error> <thread> <tuple> <type_traits> <typeindex> <typeinfo> <unordered_map> <unordered_set> <utility> <valarray> <variant> <vector> C++ 标准库概述 C++ 标准库容器 迭代器 算法 Allocators C++ 标准库中的函数对象 iostream 编程 正则表达式 (C++) 文件系统导...
C++ 中的std::string_view是一个非常方便的工具,它可以用来表示字符串的只读视图,而不需要额外的内存...
string_view通常用于函数参数类型,可用来取代 const char* 和 const string&。string_view 代替 const string&,可以避免不必要的内存分配。 string_view的成员函数即对外接口与 string 相类似,但只包含读取字符串内容的部分。 string_view::substr()的返回值类型是string_view,不产生新的字符串,不会进行内存分配。
其次,以 string_view 作为返回对象的类型,可明确告知调用者:你只能“察看”或复制走数据,而不能(直接)修改它们—— string_view 就没有修改数据的功能。 作为对比,在 C++17 之前该函数的返回类型通常是:char const* const ,或至少为 char const* 。 函数使用者通过char const *明白不能修改得到的内容,通过*...
std::string_view系C++17标准发布后新增的内容,类成员变量包含两个部分:字符串指针和字符串长度,相比...
其实你任何时候都可以使用string_view代替string作为函数的返回值类型,只要你确认返回的string_view引用的...
string类型数据可以被隐式/显示转换成string_view类型, eg. #include <iostream> int main() { std::string c = "c"; std::string_view v; v = c; std::cout << v << std::endl; return 0; } 但string_view类型的数据不能被隐式转换成string类型,需要显式转换 ...