在 C++ 中,std::string::insert
是一个功能强大的成员函数,用于在字符串的指定位置插入内容。它有多个重载版本,支持插入 字符、字符串、子字符串 等。以下是 insert
所有相关函数的详细介绍:
string& insert(size_t pos, const string& str);
在位置 pos
处插入字符串 str
。
pos
:插入位置的索引(从 0 开始)。str
:要插入的字符串。std::string s = "Hello";
s.insert(2, "World"); // s 变为 "HeWorldllo"
string& insert(size_t pos, const char* s);
在位置 pos
处插入 C 风格字符串 s
。
pos
:插入位置的索引。s
:要插入的 C 风格字符串(以 \0
结尾)。std::string s = "Hello";
s.insert(2, "World"); // s 变为 "HeWorldllo"
string& insert(size_t pos, const string& str, size_t subpos, size_t sublen = npos);
在位置 pos
处插入字符串 str
的一部分,从 subpos
开始,长度为 sublen
。
pos
:插入位置的索引。str
:要插入的字符串。subpos
:从 str
的哪个位置开始插入。sublen
:要插入的长度(默认为 npos
,表示插入到字符串末尾)。std::string s = "Hello";
std::string str = "World";
s.insert(2, str, 1, 3); // 从 str 的第 1 个字符开始插入 3 个字符,s 变为 "Heorlllo"
string& insert(size_t pos, size_t n, char c);
在位置 pos
处插入 n
个字符 c
。
pos
:插入位置的索引。n
:要插入的字符个数。c
:要插入的字符。std::string s = "Hello";
s.insert(2, 3, 'x'); // s 变为 "Hexxxllo"
iterator insert(iterator p, char c);
在迭代器 p
指向的位置插入字符 c
。
p
:指向插入位置的迭代器。c
:要插入的字符。std::string s = "Hello";
auto it = s.begin() + 2;
s.insert(it, 'x'); // s 变为 "Hexllo"
void insert(iterator p, size_t n, char c);
在迭代器 p
指向的位置插入 n
个字符 c
。
p
:指向插入位置的迭代器。n
:要插入的字符个数。c
:要插入的字符。std::string s = "Hello";
auto it = s.begin() + 2;
s.insert(it, 3, 'x'); // s 变为 "Hexxxllo"
template <class InputIterator>
void insert(iterator p, InputIterator first, InputIterator last);
在迭代器 p
指向的位置插入从 first
到 last
的字符序列。
p
:指向插入位置的迭代器。first
:指向字符序列起始的迭代器。last
:指向字符序列结束的迭代器。std::string s = "Hello";
std::string str = "World";
auto it = s.begin() + 2;
s.insert(it, str.begin(), str.end()); // s 变为 "HeWorldllo"
string& insert(iterator p, initializer_list<char> il);
在迭代器 p
指向的位置插入初始化列表 il
中的字符。
p
:指向插入位置的迭代器。il
:包含要插入字符的初始化列表。std::string s = "Hello";
auto it = s.begin() + 2;
s.insert(it, {'x', 'y', 'z'}); // s 变为 "Hexyzllo"
函数签名 | 功能描述 | 示例 |
---|---|---|
string& insert(size_t pos, const string& str) |
插入字符串 | s.insert(2, "World") |
string& insert(size_t pos, const char* s) |
插入 C 风格字符串 | s.insert(2, "World") |
string& insert(size_t pos, const string& str, size_t subpos, size_t sublen) |
插入字符串的一部分 | s.insert(2, str, 1, 3) |
string& insert(size_t pos, size_t n, char c) |
插入多个字符 | s.insert(2, 3, 'x') |
iterator insert(iterator p, char c) |
在迭代器位置插入字符 | s.insert(s.begin() + 2, 'x') |
void insert(iterator p, size_t n, char c) |
在迭代器位置插入多个字符 | s.insert(s.begin() + 2, 3, 'x') |
template |
在迭代器位置插入一段字符序列 | s.insert(s.begin() + 2, str.begin(), str.end()) |
string& insert(iterator p, initializer_list |
在迭代器位置插入初始化列表中的字符 | s.insert(s.begin() + 2, {'x', 'y', 'z'}) |
insert(size_t pos, const string& str)
或 insert(size_t pos, const char* s)
。insert(size_t pos, size_t n, char c)
或 insert(iterator p, char c)
。这些函数提供了灵活的方式来操作字符串,满足各种插入需求。