std::basic_string_view

来自cppreference.com
< cpp‎ | string
 
 
 
 
定义于头文件 <string_view>
template<

    class CharT,
    class Traits = std::char_traits<CharT>

> class basic_string_view;
(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::u16string_view std::basic_string_view<char16_t>
std::u32string_view std::basic_string_view<char32_t>

目录

[编辑] 模板形参

CharT - 字符类型
Traits - 指定字符类型上操作的字符特性 (CharTraits) 类。同 basic_stringTraits::char_type 必须指名同 CharT 的类型,否则行为未定义。

[编辑] 成员类型

成员类型 定义
traits_type Traits
value_type CharT
pointer CharT*
const_pointer const CharT*
reference CharT&
const_reference const CharT&
const_iterator 实现定义的常随机访问迭代器 (RandomAccessIterator) 及相接迭代器 (ContiguousIterator) ,其 value_typeCharT
iterator const_iterator
reverse_iterator const_reverse_iterator
const_reverse_iterator std::reverse_iterator<const_iterator>
size_type std::size_t
difference_type std::ptrdiff_t

注意: iteratorconst_iterator 是同一类型,因为 string_view 是到常字符序列中的视图。

[编辑] 成员函数

构造 basic_string_view
(公开成员函数) [编辑]
对视图赋值
(公开成员函数) [编辑]
迭代器
返回指向起始位置的迭代器
(公开成员函数) [编辑]
返回指向结尾的迭代器
(公开成员函数) [编辑]
返回指向起始的反向迭代器
(公开成员函数) [编辑]
返回指向结尾的反向迭代器
(公开成员函数) [编辑]
元素访问
访问指定字符
(公开成员函数) [编辑]
访问指定字符,带有边界检查
(公开成员函数) [编辑]
访问首个字符
(公开成员函数) [编辑]
访问最末字符
(公开成员函数) [编辑]
返回指向视图首字符的指针
(公开成员函数) [编辑]
容量
返回字符数
(公开成员函数) [编辑]
返回最大字符数
(公开成员函数) [编辑]
检查视图是否为空
(公开成员函数) [编辑]
修改器
以后移起点收缩视图
(公开成员函数) [编辑]
以前移终点收缩视图
(公开成员函数) [编辑]
交换内容
(公开成员函数) [编辑]
操作
复制字符
(公开成员函数) [编辑]
返回子串
(公开成员函数) [编辑]
比较二个视图
(公开成员函数) [编辑]
在视图中查找字符
(公开成员函数) [编辑]
寻找子串的最后一次出现
(公开成员函数) [编辑]
查找字符的首次出现
(公开成员函数) [编辑]
查找字符的最后一次出现
(公开成员函数) [编辑]
查找字符的首次不出现
(公开成员函数) [编辑]
查找字符的最后一次不出现
(公开成员函数) [编辑]

常量

[静态]
特殊值。准确含义依赖于语境。
(公开静态成员常量) [编辑]

[编辑] 非成员函数

以字典序比较二个字符串视图
(函数模板) [编辑]
输入/输出
进行 string_view 上的流输出
(函数模板) [编辑]

[编辑] 字面量

定义于内联命名空间 std::literals::string_view_literals
创建一个字符数组字面量的字符串视图
(函数) [编辑]

[编辑] 帮助类

支持basic_string_view的哈希
(类模板特化) [编辑]

[编辑] 注意

程序员负责确保 std::string_view 不在被指向数组的生存期外继续生存:

std::string_view good("a string literal");   // OK : "good" 指向静态数组
std::string_view bad("a temporary string"s); // "bad" 保有悬垂指针