std::basic_string::insert
index
插入 count
个字符 ch
的副本。 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;
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;
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;
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;
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;
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;
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;
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;
pos
所指向的元素(若存在)前插入来自 initializer_list ilist
的字符。iterator insert( const_iterator pos, std::initializer_list ilist );
// 在 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;