📅  最后修改于: 2023-12-03 15:14:01.823000             🧑  作者: Mango
std::string_view
是 C++17 中新增的一个类,它用于表示一个字符串的只读视图,可以看成是一个轻量级的字符串引用,可以避免在一些场景中频繁地进行字符串复制,从而节省时间和内存。不仅仅是字符串,std::string_view
也可以用于表示一个字符序列的只读视图,比如一个字符数组。
std::string_view
的使用方法与 std::string
很相似,支持大多数 std::string
的成员函数,比如:
length()
:返回字符串的长度,与 size()
作用相同。empty()
:判断字符串是否为空,若为空返回 true。operator[]
:可以按下标访问字符串中的字符,与 std::string
的用法相同。front()
:返回字符串的第一个字符。back()
:返回字符串的最后一个字符。data()
:返回字符串的指针,指向首字符。在 std::string_view
中,由于是只读视图,因此不支持改变字符串内容的函数,比如 operator[]
的重载版本。
除此之外,std::string_view
还新增了一些新的成员函数,比如:
substr()
:用于截取一个子串,返回一个新的只读视图。remove_prefix()
:用于去掉字符串的前缀。remove_suffix()
:用于去掉字符串的后缀。下面是一个简单的使用示例:
#include <iostream>
#include <string_view>
int main()
{
std::string_view sv("hello world");
std::cout << sv << '\n'; // hello world
std::cout << sv.length() << '\n'; // 11
// 截取子串
auto sv2 = sv.substr(6, 5);
std::cout << sv2 << '\n'; // world
// 去掉前缀和后缀
sv.remove_prefix(6);
sv.remove_suffix(1);
std::cout << sv << '\n'; // world
return 0;
}
以上就是 std::string_view
的简单介绍和使用方法。相较于传统的字符串操作,std::string_view
提供了更加高效的方式,避免了频繁的内存分配和复制,适用于各种场景下对字符串的只读访问,比如函数参数传递、循环迭代等等。