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 (公开成员函数) | |
| 赋值字符给字符串 (公开成员函数) |