std::basic_string::operator=
来自cppreference.com
< cpp | string | basic string
basic_string& operator=( const basic_string& str ); |
(1) | |
basic_string& operator=( basic_string&& str ); |
(2) | (C++11 起) |
basic_string& operator=( const CharT* s ); |
(3) | |
basic_string& operator=( CharT ch ); |
(4) | |
basic_string& operator=( std::initializer_list<CharT> ilist ); |
(5) | (C++11 起) |
basic_string& operator=( std::basic_string_view<CharT, Traits> sv); |
(6) | (C++17 起) |
替换字符串的内容。
1) 以
str
的副本替换内容。若 *this
与 str
为同一对象,则此函数无效果。
2) 用移动语义以 str 的内容替换内容。令 str 留在合法或未指定的状态。若 *this 与 str 为同一对象,则函数无效果。
|
(C++17 前) |
2) 用移动语义以 str 的内容替换内容。之后 str 在合法但未指定的状态。若 std::allocator_traits<Allocator>::propagate_on_container_move_assignment() 为 true ,则以源分配器的副本替换目标分配器。若它为 false 且源与目标分配器不比较相等,则目标不能接收源内存的所有权,而必须逐个字符赋值,用其自身的分配器按需分配额外内存。不同于其他容器移动赋值,指向 str 的引用、指针和迭代器可能被非法化。 |
(C++17 起) |
3) 以
s
所指向的空终止字符串的内容替换内容,如同以 *this = basic_string(s) ,它涉及调用 Traits::length(s) 。4) 以字符
ch
的内容替换内容,如同用 *this = basic_string(1,c)5) 以 initializer_list
ilist
的内容替换内容,如同用 *this = basic_string(ilist)6) 以 string_view
sv
的内容替换内容,如同用 assign(sv)目录 |
[编辑] 参数
ch | - | 用以初始化 string 的字符 |
str | - | 用作源初始化 string 的 string |
s | - | 指向空终止字符串的指针,用作源初始化 string |
init | - | 用作源初始化 string 的 std::initializer_list |
sv | - | 用作源初始化 string 的 std::basic_string_view |
[编辑] 返回值
*this
[编辑] 复杂度
1) 与 str
的大小成线性
2) 与 this
的大小成线性(正式而言,必须销毁每个 CharT )。若分配器比较不相等且不传播,则亦与 str
的大小成线性(必须进行复制)
3) 与 s
的大小成线性
4) 常数。
5) 与 init
的大小成线性
[编辑] 异常
2) noexcept 规定:
noexcept |
(C++11 起) (C++17 前) |
2) noexcept 规定:
noexcept(std::allocator_traits<Allocator>::propagate_on_container_move_assignment::value || std::allocator_traits<Allocator>::is_always_equal::value) |
(C++17 起) |
若操作将导致 size() > max_size()
,则抛出 std::length_error 。
若因任何原因抛异常,则此函数无效果(强异常保证)。 | (C++11 起) |
[编辑] 示例
本节未完成 原因:暂无示例 |
[编辑] 缺陷报告
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
DR | 应用于 | 出版时的行为 | 正确行为 |
---|---|---|---|
LWG 2063 | C++11 | 非标准化注释曾说交换是移动赋值的合法实现 | 更正以支持分配器 |
[编辑] 参阅
构造 basic_string (公开成员函数) | |
赋值字符给字符串 (公开成员函数) |