后附字符到结尾 append 拷贝字符,copy
std::basic_string1) 后附 count 个 ch 的副本::append
basic_string& append( size_type count, CharT ch );
调用示例
str.append(5, 'A');
std::cout << "str append: " << str << std::endl << std::endl;
2) 后附 string str
basic_string& append( const basic_string& str );
调用示例
// 后附 string str
string str2 = "ABCDE GH";
str.append(str2);
std::cout << "str append: " << str << std::endl << std::endl;
3) 后附 str 的子串 [pos, pos+count) 。
若请求的子串越过 string 结尾,或若 count == npos ,则后附的子串为 [pos, size()) 。若 pos > str.size() ,则抛出 std::out_of_range 。
basic_string& append( const basic_string& str, size_type pos, size_type count );
调用示例
// 后附 str 的子串 [pos, pos+count) 。
str = str1;
str.append(str2, 0, 2);
std::cout << "str append: " << str << std::endl << std::endl;
4) 后附范围 [s, s + count) 中的字符。此范围能含有空字符。
basic_string& append( const CharT* s, size_type count );
调用示例
// 后附范围 [s, s + count) 中的字符。此范围能含有空字符。
str = str1;
str.append(str2.c_str(), str2.size());
std::cout << "str append: " << str << std::endl << std::endl;
5) 后附 s 所指向的空终止字符串。由首个空字符用 Traits::length(s) 确定字符串的长度。
basic_string& append( const CharT* s );
调用示例
// 后附 s 所指向的空终止字符串。由首个空字符用 Traits::length(s) 确定字符串的长度。
str = str1;
str.append(str2.c_str());
std::cout << "str append: " << str << std::endl << std::endl;
6) 后附范围 [first, last) 中的字符。
| 若 InputIt 为整数类型,则此重载与重载 (1) 拥有相同效果。 | (C++11 前) |
| 此重载仅若 InputIt 满足 遗留输入迭代器 (LegacyInputIterator) 的要求才参与重载决议。 | (C++11 起) |
template< class InputIt > basic_string& append( InputIt first, InputIt last );
调用示例
// 后附范围 [first, last) 中的字符。
str = str1;
str.append(str2.begin(), str2.begin() + 5);
std::cout << "str append: " << str << std::endl << std::endl;
7) 后附来自 initializer_list ilist 的字符。
basic_string& append( std::initializer_listilist );
调用示例
// 后附来自 initializer_list ilist 的字符。
str = str1;
str.append({'A', 'B', 'C'});
std::cout << "str append: " << str << std::endl << std::endl;
参数
| count | - | 要后附的字符数 |
| pos | - | 要后附的首个字符下标 |
| ch | - | 要后附的字符值 |
| first, last | - | 要后附的字符范围 |
| str | - | 要后附的 string |
| s | - | 指向要后附的字符串的指针 |
| ilist | - | 拥有要后附的字符的 initializer_list |
| t | - | 可转换为带要后附的字符的 std::basic_string_view 的对象 |
*this
复杂度无标准复杂度保证,典型实现表现类似 std::vector::insert 。
异常若因任何原因抛出异常,则此函数无效果(强异常保证)。 (C++11 起)
若操作会导致 size() > max_size() ,则抛出 std::length_error 。
调用示例 string str = "abcdefg hijk";
string str1 = str;
// 后附字符到结尾
// 后附 count 个 ch 的副本
str.append(5, 'A');
std::cout << "str append: " << str << std::endl << std::endl;
// 后附 string str
string str2 = "ABCDE GH";
str.append(str2);
std::cout << "str append: " << str << std::endl << std::endl;
// 后附 str 的子串 [pos, pos+count) 。
str = str1;
str.append(str2, 0, 2);
std::cout << "str append: " << str << std::endl << std::endl;
// 后附范围 [s, s + count) 中的字符。此范围能含有空字符。
str = str1;
str.append(str2.c_str(), str2.size());
std::cout << "str append: " << str << std::endl << std::endl;
// 后附 s 所指向的空终止字符串。由首个空字符用 Traits::length(s) 确定字符串的长度。
str = str1;
str.append(str2.c_str());
std::cout << "str append: " << str << std::endl << std::endl;
// 后附范围 [first, last) 中的字符。
str = str1;
str.append(str2.begin(), str2.begin() + 5);
std::cout << "str append: " << str << std::endl << std::endl;
// 后附来自 initializer_list ilist 的字符。
str = str1;
str.append({'A', 'B', 'C'});
std::cout << "str append: " << str << std::endl << std::endl;
复制字符
std::basic_string::copy
size_type copy( CharT* dest, size_type count, size_type pos = 0) const;
复制子串 [pos, pos+count) 到 dest 所指向的字符串。若请求的子串越过 string 结尾,或若 count == npos ,则复制的子串为 [pos, size()) 。产生的字符串不是空终止的。
若 pos > size() ,则抛出 std::out_of_range 。
参数| dest | - | 指向目标字符串的指针 |
| count | - | 子串长度 |
| pos | - | 包含的首字符位置 |
复制的字符数
异常若 pos > size() 则为 std::out_of_range 。
复杂度与 count 成线性
调用示例 // 复制字符
char ch[16] = {};
str.copy(ch, 10, 0);
std::cout << "str copy: " << ch << std::endl << std::endl;
调用示例
string str = "abcdefg hijk";
string str1 = str;
// 后附字符到结尾
// 后附 count 个 ch 的副本
str.append(5, 'A');
std::cout << "str append: " << str << std::endl << std::endl;
// 后附 string str
string str2 = "ABCDE GH";
str.append(str2);
std::cout << "str append: " << str << std::endl << std::endl;
// 后附 str 的子串 [pos, pos+count) 。
str = str1;
str.append(str2, 0, 2);
std::cout << "str append: " << str << std::endl << std::endl;
// 后附范围 [s, s + count) 中的字符。此范围能含有空字符。
str = str1;
str.append(str2.c_str(), str2.size());
std::cout << "str append: " << str << std::endl << std::endl;
// 后附 s 所指向的空终止字符串。由首个空字符用 Traits::length(s) 确定字符串的长度。
str = str1;
str.append(str2.c_str());
std::cout << "str append: " << str << std::endl << std::endl;
// 后附范围 [first, last) 中的字符。
str = str1;
str.append(str2.begin(), str2.begin() + 5);
std::cout << "str append: " << str << std::endl << std::endl;
// 后附来自 initializer_list ilist 的字符。
str = str1;
str.append({'A', 'B', 'C'});
std::cout << "str append: " << str << std::endl << std::endl;
// 复制字符
char ch[16] = {};
str.copy(ch, 10, 0);
std::cout << "str copy: " << ch << std::endl << std::endl;



