std::basic_string_view
来自cppreference.com
                    
                                        
                    
                    
                                                            
                    |   定义于头文件  <string_view>
  | 
||
|   template<      class CharT,   | 
(C++17 起) | |
类模板 basic_string_view 描述一个能指代常量连续仿 char 对象序列的对象,序列首元素在零位置。
典型的实现仅保有二个成员:指向常 CharT 的指针和大小。
提供数种对常用字符类型的 typedef :
|   定义于头文件  
<string_view>  | |
| 类型 | 定义 | 
| std::string_view | std::basic_string_view<char> | 
| std::wstring_view | std::basic_string_view<wchar_t> | 
| std::u8string_view (C++20) | std::basic_string_view<char8_t> | 
| std::u16string_view | std::basic_string_view<char16_t> | 
| std::u32string_view | std::basic_string_view<char32_t> | 
模板形参
| CharT | - | 字符类型 | 
| Traits | - |  指定字符类型上操作的字符特征 (CharTraits) 类。同 basic_string , Traits::char_type 必须指名同 CharT 的类型,否则程序为谬构。
 | 
成员类型
| 成员类型 | 定义 | 
  traits_type
 | 
  Traits
 | 
  value_type
 | 
  CharT
 | 
  pointer
 | 
  CharT*
 | 
  const_pointer
 | 
  const CharT*
 | 
  reference
 | 
  CharT&
 | 
  const_reference
 | 
  const CharT&
 | 
  const_iterator
 | 
 实现定义的常遗留随机访问迭代器 (LegacyRandomAccessIterator) 、常量表达式迭代器 (ConstexprIterator)  (C++20 起)兼遗留连续迭代器 (LegacyContiguousIterator) ,其 value_type 为 CharT
 | 
  iterator
 | 
  const_iterator
 | 
  const_reverse_iterator
 | 
std::reverse_iterator<const_iterator> | 
  reverse_iterator
 | 
  const_reverse_iterator
 | 
  size_type
 | 
std::size_t | 
  difference_type
 | 
std::ptrdiff_t | 
注解: iterator 与 const_iterator 是同一类型,因为 string_view 是到常字符序列中的视图。
容器 (Container) 的迭代器类型上的所有要求亦应用于 basic_string_view 的 iterator 和 const_iterator 类型。
成员函数
  构造 basic_string_view (公开成员函数)  | |
|   对视图赋值  (公开成员函数)  | |
 迭代器 | |
|    返回指向起始位置的迭代器  (公开成员函数)  | |
|   返回指向结尾的迭代器  (公开成员函数)  | |
|   返回指向起始的反向迭代器  (公开成员函数)  | |
|   返回指向结尾的反向迭代器  (公开成员函数)  | |
 元素访问 | |
|   访问指定字符  (公开成员函数)  | |
|    访问指定字符,带有边界检查  (公开成员函数)  | |
|   访问首个字符  (公开成员函数)  | |
|    访问最末字符  (公开成员函数)  | |
|   返回指向视图首字符的指针  (公开成员函数)  | |
 容量 | |
|   返回字符数  (公开成员函数)  | |
|   返回最大字符数  (公开成员函数)  | |
|   检查视图是否为空  (公开成员函数)  | |
 修改器 | |
|   以后移起点收缩视图  (公开成员函数)  | |
|   以前移终点收缩视图  (公开成员函数)  | |
|   交换内容  (公开成员函数)  | |
 操作 | |
|   复制字符  (公开成员函数)  | |
|   返回子串  (公开成员函数)  | |
|   比较二个视图  (公开成员函数)  | |
|    (C++20)  | 
  检查 string_view 是否始于给定前缀  (公开成员函数)  | 
|    (C++20)  | 
  检查 string_view 是否终于给定后缀  (公开成员函数)  | 
|    (C++23)  | 
   检查字符串视图是否含有给定的子串或字符   (公开成员函数)  | 
|   在视图中查找字符  (公开成员函数)  | |
|   寻找子串的最后一次出现  (公开成员函数)  | |
|   查找字符的首次出现  (公开成员函数)  | |
|   查找字符的最后一次出现  (公开成员函数)  | |
|   查找字符的首次不出现  (公开成员函数)  | |
|   查找字符的最后一次不出现  (公开成员函数)  | |
 常量 | |
|    [静态]  | 
  特殊值。准确含义依赖于语境。  (公开静态成员常量)  | 
非成员函数
|    (C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20 中移除)(C++20)  | 
  以字典序比较两个字符串视图   (函数模板)  | 
 输入/输出 | |
|   进行字符串视图的流输出  (函数模板)  | |
字面量
|   定义于内联命名空间  
std::literals::string_view_literals | |
|    (C++17)  | 
  创建一个字符数组字面量的字符串视图  (函数)  | 
辅助类
|    string_view 的散列支持   (类模板特化)  | 
辅助模板
|   template<class CharT, class Traits> inline constexpr bool ranges::enable_borrowed_range<std::basic_string_view<CharT, Traits>> = true;  | 
(C++20 起) | |
std::ranges::enable_borrowed_range 的此特化使得 basic_string_view 满足 borrowed_range 。
|   template<class CharT, class Traits> inline constexpr bool ranges::enable_view<std::basic_string_view<CharT, Traits>> = true;  | 
(C++20 起) | |
std::ranges::enable_view 的此特化使得 basic_string_view 满足 view 。
推导指引(C++20 起)
注解
程序员负责确保 std::string_view 不在被指向数组的生存期外继续生存:
std::string_view good("a string literal"); // OK : "good" 指向静态数组 std::string_view bad("a temporary string"s); // "bad" 保有悬垂指针