Logo
Section 1 / 4

简介

字符串视图类基于字符串类构建,它限制了可在字符串上执行的操作。

导入

简介

字符串视图类基于字符串类构建,它限制了可在字符串上执行的操作。

string view 是一个非拥有的字符串引用,用于表示一段字符序列的视图。该字符序列可以是 C++ 字符串(std::string),也可以是 C 风格字符串(C-string)。使用 string view 需要包含头文件 <string_view>。

🔑 string view 是一种用于优化拷贝的字符串类型

从宏观角度来看,std::string_view 的主要目的是避免复制那些已经被其他对象拥有的字符串数据,并提供对类似 std::string 对象的不可变访问。string view 可以看作是一种受限的字符串类型,仅支持不可变操作。此外,string view sv 提供了两个特殊的“修改”操作:sv.remove_prefix 和 sv.remove_suffix,它们通过调整视图范围来改变前缀或后缀的可见部分,并不真正修改底层字符数据。

string view 是一个类模板,其模板参数为字符类型和字符特征(traits),其中字符特征具有默认值。与 std::string 不同,string view 是非拥有者(non-owning),因此不需要分配器(allocator)。

1template < class CharT, class Traits = std::char_traits<CharT> > 2 class basic_string_view;

与字符串类型类似,string view 也针对四种底层字符类型 char、wchar_t、char16_t 和 char32_t 定义了四个别名:

1typedef std::string_view std::basic_string_view<char>; 2typedef std::wstring_view std::basic_string_view<wchar_t>; 3typedef std::u16string_view std::basic_string_view<char16_t>; 4typedef std::u32string_view std::basic_string_view<char32_t>;

ℹ️ std::string_view 就是通常所说的 string view

在 C++ 中提到 string view 时,99% 的情况下指的是针对字符类型 char 的特化版本 std::basic_string_view<char>。本书中的讨论也遵循这一惯例。

字符串

创建并初始化