【insert函数】

在 C++ 中,std::string::insert 是一个功能强大的成员函数,用于在字符串的指定位置插入内容。它有多个重载版本,支持插入 字符字符串子字符串 等。以下是 insert 所有相关函数的详细介绍:


1. 插入字符串

函数签名:
string& insert(size_t pos, const string& str);
功能:

在位置 pos 处插入字符串 str

参数:
  • pos:插入位置的索引(从 0 开始)。
  • str:要插入的字符串。
示例:
std::string s = "Hello";
s.insert(2, "World");  // s 变为 "HeWorldllo"

2. 插入 C 风格字符串

函数签名:
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"

3. 插入字符串的一部分

函数签名:
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"

4. 插入字符

函数签名:
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"

5. 在迭代器位置插入字符

函数签名:
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"

6. 在迭代器位置插入多个字符

函数签名:
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"

7. 在迭代器位置插入一段字符序列

函数签名:
template <class InputIterator>
void insert(iterator p, InputIterator first, InputIterator last);
功能:

在迭代器 p 指向的位置插入从 firstlast 的字符序列。

参数:
  • 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"

8. 插入初始化列表

函数签名:
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 void insert(iterator p, InputIterator first, InputIterator last) 在迭代器位置插入一段字符序列 s.insert(s.begin() + 2, str.begin(), str.end())
string& insert(iterator p, initializer_list il) 在迭代器位置插入初始化列表中的字符 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)
  • 如果需要插入子字符串或字符序列,使用相应的重载版本。

这些函数提供了灵活的方式来操作字符串,满足各种插入需求。

你可能感兴趣的:(简化算法,开发语言,c++)