std::basic_string1) 在位置 index 插入 count 个字符 ch 的副本。::insert
basic_string& insert( size_type index, size_type count, CharT ch );
调用示例
//在位置 index 插入 count 个字符 ch 的副本。
str.insert(2, 5, 'H');
std::cout << "str insert: " << str << std::endl << std::endl;
2) 在位置 index 插入 s 所指向的空终止字符串。字符串的长度由首个空字符,用 Traits::length(s) 确定。
basic_string& insert( size_type index, const CharT* s );
调用示例
// 在位置 index 插入 s 所指向的空终止字符串。
// 字符串的长度由首个空字符,用 Traits::length(s) 确定。
str.insert(2, str1.c_str());
std::cout << "str insert: " << str << std::endl << std::endl;
3) 在位置 index 插入范围 [s, s+count) 中的字符。范围能含有空字符。
basic_string& insert( size_type index, const CharT* s, size_type count );
调用示例
// 在位置 index 插入范围 [s, s+count) 中的字符。范围能含有空字符。
string str2 = "abcdefg hijk";
str = str2;
str.insert(2, str.c_str(), str2.size());
std::cout << "str insert: " << str << std::endl << std::endl;
4) 在位置 index 插入 string str 。
basic_string& insert( size_type index, const basic_string& str );
调用示例
// 在位置 index 插入 string str 。
str = str2;
str.insert(2, str2);
std::cout << "str insert: " << str << std::endl << std::endl;
5) 在位置 index 插入由 str.substr(index_str, count) 获得的 string 。
basic_string& insert( size_type index, const basic_string& str,
size_type index_str, size_type count );
调用示例
// 在位置 index 插入由 str.substr(index_str, count) 获得的 string 。
str = str2;
str.insert(2, str2, 0, 5);
std::cout << "str insert: " << str << std::endl << std::endl;
6) 在 pos 所指向的字符前插入字符 ch 。
iterator insert( iterator pos, CharT ch ); (C++11 前) iterator insert( const_iterator pos, CharT ch ); (C++11 起)
调用示例
// 在 pos 所指向的字符前插入字符 ch 。
str = str2;
str.insert(str.begin() + 2, 'K');
std::cout << "str insert: " << str << std::endl << std::endl;
7) 在 pos 所指向的元素(若存在)前插入 count 个字符 ch 的副本。
void insert( iterator pos, size_type count, CharT ch ); (C++11 前) iterator insert( const_iterator pos, size_type count, CharT ch ); (C++11 起)
调用示例
// 在 pos 所指向的元素(若存在)前插入 count 个字符 ch 的副本。
str = str2;
str.insert(str.begin() + 2, 5, 'K');
std::cout << "str insert: " << str << std::endl << std::endl;
8) 在 pos 所指向的元素(若存在)前插入来自范围 [first, last) 的元素。
若 InputIt 不满足遗留输入迭代器 (LegacyInputIterator) 则此重载不参与重载决议。 (C++11 起)
template< class InputIt > void insert( iterator pos, InputIt first, InputIt last ); (C++11 前) template< class InputIt > iterator insert( const_iterator pos, InputIt first, InputIt last ); (C++11 起)
调用示例
// 在 pos 所指向的元素(若存在)前插入来自范围 [first, last) 的元素。
str = str2;
str.insert(str.begin() + 2, str2.begin() + 1, str2.begin() + 5);
std::cout << "str insert: " << str << std::endl << std::endl;
9) 在 pos 所指向的元素(若存在)前插入来自 initializer_list ilist 的字符。
iterator insert( const_iterator pos, std::initializer_listilist );
// 在 pos 所指向的元素(若存在)前插入来自 initializer_list ilist 的字符。
str = str2;
str.insert(str.begin() + 2, {'A', 'B', 'C'});
std::cout << "str insert: " << str << std::endl << std::endl;
参数
| index | - | 插入内容到的位置 |
| pos | - | 将插入字符到其前的迭代器 |
| ch | - | 要插入的字符 |
| count | - | 要插入的字符数 |
| s | - | 指向要插入的字符串的指针 |
| str | - | 要插入的 string |
| first, last | - | 定义要插入字符的范围 |
| index_str | - | string str 中要插入的首字符位置 |
| ilist | - | 要插入的字符来源的 std::initializer_list |
| t | - | 要插入的字符来源对象(可转换为 std::basic_string_view ) |
| 类型要求 | ||
| - InputIt 必须满足遗留输入迭代器 (LegacyInputIterator) 的要求。 | ||
1-5,10-11) *this
6-9) 指代首个被插入字符的迭代器,或若未插入字符则为 pos ( count == 0 或 ilist.size() == 0 或 first == last )
异常1-4, 10) 若 index > size() 则为 std::out_of_range 。
5) 若 index > size() 或若 index_str > str.size() 则抛出 std::out_of_range 。
11) 若 index > size() 或若 index_str > sv.size() 则抛出 std::out_of_range 。
所有情况下,若 size() + ins_count > max_size() 则抛出 std::length_error ,其中 ins_count 是将要插入的字符数。并且可能抛出 Allocator::allocate 所抛的任何异常。
| 任何情况下,若因任何原因抛异常,则此函数无效果(强异常保证)。 | (C++11 起) |
下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。
调用示例
std::cout << "test_operation begin" << std::endl;
string str = "abcdefg hijk";
string str1 = "str1";
// 插入字符
//在位置 index 插入 count 个字符 ch 的副本。
str.insert(2, 5, 'H');
std::cout << "str insert: " << str << std::endl << std::endl;
// 在位置 index 插入 s 所指向的空终止字符串。
// 字符串的长度由首个空字符,用 Traits::length(s) 确定。
str.insert(2, str1.c_str());
std::cout << "str insert: " << str << std::endl << std::endl;
// 在位置 index 插入范围 [s, s+count) 中的字符。范围能含有空字符。
string str2 = "abcdefg hijk";
str = str2;
str.insert(2, str.c_str(), str2.size());
std::cout << "str insert: " << str << std::endl << std::endl;
// 在位置 index 插入 string str 。
str = str2;
str.insert(2, str2);
std::cout << "str insert: " << str << std::endl << std::endl;
// 在位置 index 插入由 str.substr(index_str, count) 获得的 string 。
str = str2;
str.insert(2, str2, 0, 5);
std::cout << "str insert: " << str << std::endl << std::endl;
// 在 pos 所指向的字符前插入字符 ch 。
str = str2;
str.insert(str.begin() + 2, 'K');
std::cout << "str insert: " << str << std::endl << std::endl;
// 在 pos 所指向的元素(若存在)前插入 count 个字符 ch 的副本。
str = str2;
str.insert(str.begin() + 2, 5, 'K');
std::cout << "str insert: " << str << std::endl << std::endl;
// 在 pos 所指向的元素(若存在)前插入来自范围 [first, last) 的元素。
str = str2;
str.insert(str.begin() + 2, str2.begin() + 1, str2.begin() + 5);
std::cout << "str insert: " << str << std::endl << std::endl;
// 在 pos 所指向的元素(若存在)前插入来自 initializer_list ilist 的字符。
str = str2;
str.insert(str.begin() + 2, {'A', 'B', 'C'});
std::cout << "str insert: " << str << std::endl << std::endl;



