public member function
<string>

std::basic_string::append

string (1)
basic_string& append (const basic_string& str);
substring (2)
basic_string& append (const basic_string& str, size_type subpos, size_type sublen);
c-string (3)
basic_string& append (const charT* s);
buffer (4)
basic_string& append (const charT* s, size_type n);
fill (5)
basic_string& append (size_type n, charT c);
range (6)
template <class InputIterator>   basic_string& append (InputIterator first, InputIterator last);
string (1)
basic_string& append (const basic_string& str);
substring (2)
basic_string& append (const basic_string& str, size_type subpos, size_type sublen);
c-string (3)
basic_string& append (const charT* s);
buffer (4)
basic_string& append (const charT* s, size_type n);
fill (5)
basic_string& append (size_type n, charT c);
range (6)
template <class InputIterator>   basic_string& append (InputIterator first, InputIterator last);
initializer list(7)
basic_string& append (initializer_list<charT> il);
string (1)
basic_string& append (const basic_string& str);
substring (2)
basic_string& append (const basic_string& str, size_type subpos, size_type sublen = npos);
c-string (3)
basic_string& append (const charT* s);
buffer (4)
basic_string& append (const charT* s, size_type n);
fill (5)
basic_string& append (size_type n, charT c);
range (6)
template <class InputIterator>   basic_string& append (InputIterator first, InputIterator last);
initializer list(7)
basic_string& append (initializer_list<charT> il);
向字符串追加内容
通过在当前值的末尾追加额外的字符来扩展 basic_string

(1) 字符串
追加 str 的副本。
(2) 子字符串
追加 str 的子字符串的副本。子字符串是从字符位置 subpos 开始并跨越 sublen 个字符(或直到 str 的末尾,如果 str 太短或者 sublenbasic_string::npos)的部分。
(3) C 风格字符串
追加由 s 指向的以 null 结尾的字符序列(C 风格字符串)形成的字符串的副本。
此字符序列的长度由调用确定traits_type::length(s).
(4) 缓冲区
追加 s 指向的字符数组中的前 n 个字符的副本。
(5) 填充
追加 n 个字符 c 的连续副本。
(6) 范围
追加范围[first,last),以相同的顺序。
(7) 初始化列表
追加 il 中每个字符的副本,顺序相同。

参数

str
另一个具有相同类型的basic_string对象(具有相同的类模板参数charT, 特性 (traits)Alloc), 其值被追加。
subpos
str 中作为子字符串复制到对象的第一个字符的位置。
如果它大于str长度,则抛出out_of_range
注意:str中的第一个字符用值表示0(不是1).
sublen
要复制的子字符串的长度(如果字符串较短,则会复制尽可能多的字符)。
basic_string::npos值表示直到str末尾的所有字符。
s
指向字符数组的指针(例如c-string)。
n
要复制的字符数。
c
字符值,重复 *n* 次。
first, last
指向范围内初始位置和最终位置的输入迭代器。 使用的范围是[first,last),其中包括firstlast之间的所有字符,包括first指向的字符,但不包括last指向的字符。
函数模板参数InputIterator应为指向可转换为charT.
如果已知InputIterator是一种整数类型,参数被强制转换为适当的类型,以便使用签名 (5) 代替。
il
il
这些对象是从初始化列表声明符自动构造的。

charTbasic_string 的字符类型(即,它的第一个模板参数)。
成员类型size_type是一种无符号整型类型。

返回值

*this

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// appending to string
#include <iostream>
#include <string>

int main ()
{
  std::string str;
  std::string str2="Writing ";
  std::string str3="print 10 and then 5 more";

  // used in the same order as described above:
  str.append(str2);                       // "Writing "
  str.append(str3,6,3);                   // "10 "
  str.append("dots are cool",5);          // "dots "
  str.append("here: ");                   // "here: "
  str.append(10u,'.');                    // ".........."
  str.append(str3.begin()+8,str3.end());  // " and then 5 more"
  str.append<int>(5,0x2E);                // "....."

  std::cout << str << '\n';
  return 0;
}

输出
Writing 10 dots here: .......... and then 5 more.....


复杂度

未指定,但通常与新的 字符串长度 成线性关系。

迭代器有效性

与此对象相关的任何迭代器、指针和引用都可能失效。

数据竞争

对象被修改。

异常安全

强保证: 如果抛出异常,则 basic_string 中没有任何更改。

如果已知s没有指向足够长的数组,或者如果指定的范围是[first,last)无效,则会导致未定义行为

如果 subpos 大于 str长度,则会抛出 out_of_range 异常。
如果结果 字符串长度 超过 max_size,则会抛出 length_error 异常。
如果该类型使用默认分配器,如果函数需要分配存储空间但失败,则会抛出bad_alloc异常。

另见