跳到主要内容

std::string operator+=

// (1) Non const version only
constexpr basic_string& operator+=( const basic_string& str );

// (2) Non const version only
constexpr basic_string& operator+=( CharT ch );

// (3) Non const version only
constexpr basic_string& operator+=( const CharT* s );

// (4) Non const version only
constexpr basic_string& operator+=( std::initializer_list<CharT> ilist );

// (5) Non const version only
template < class StringViewLike >
constexpr basic_string& operator+=( const StringViewLike& t );

将额外字符附加到字符串。

  • (1) 附加字符串 str
  • (2) 附加字符 ch
  • (3) 附加由 s 指向的以 null 结尾的字符字符串。
  • (4) 附加初始化列表 ilist 中的字符。
  • (5)t 隐式转换为字符串视图 sv,如同通过 std::basic_string_view<CharT, Traits> sv = t;,然后附加字符串视图 sv 中的字符,如同通过 append(sv)
    重载决议

    此重载仅在 std::is_convertible_v<const StringViewLike&, std::basic_string_view<CharT, Traits>>truestd::is_convertible_v<const StringViewLike&, const CharT*>false 时参与重载决议。

参数

  • str - 要附加的字符串
  • ch - 要附加的字符值
  • s - 指向要附加的以 null 结尾的字符字符串的指针
  • ilist - 包含要附加字符的 std::initializer_list
  • t - 包含要附加字符的对象(可转换为 std::basic_string_view

返回值

*this

复杂度

重要

本节需要改进。您可以通过编辑此文档页面来帮助我们。

没有标准复杂性保证,典型实现的行为类似于 std::vector::insert()

异常

如果操作导致 size() > max_size(),则抛出std::length_error

在任何情况下,如果由于任何原因抛出异常,此函数无效(强异常保证)。 (自 C++11 起)

备注

注意

重载 (2) 可以接受任何可隐式转换为 CharT 的类型。
对于 std::string,其中 CharTchar,可接受的类型集包括所有算术类型。

这可能会产生意外效果。

示例

Main.cpp
#include <iostream>
#include <iomanip>
#include <string>

int main()
{
std::string str;
str.reserve(50); //reserves sufficient storage space to avoid memory reallocation
std::cout << std::quoted(str) << '\n'; //empty string

str += "This";
std::cout << std::quoted(str) << '\n';

str += std::string(" is ");
std::cout << std::quoted(str) << '\n';

str += 'a';
std::cout << std::quoted(str) << '\n';

str += {' ','s','t','r','i','n','g','.'};
std::cout << std::quoted(str) << '\n';

str += 76.85; // equivalent to str += static_cast<char>(76.85), might not be the intent
std::cout << std::quoted(str) << '\n';
}
输出
""
"This"
"This is "
"This is a"
"This is a string."
"This is a string.L"
本文源自此 CppReference 页面。它可能为了改进或编辑者偏好而进行了修改。点击“编辑此页面”查看本文档的所有更改。
悬停查看原始许可证。

std::string operator+=

// (1) Non const version only
constexpr basic_string& operator+=( const basic_string& str );

// (2) Non const version only
constexpr basic_string& operator+=( CharT ch );

// (3) Non const version only
constexpr basic_string& operator+=( const CharT* s );

// (4) Non const version only
constexpr basic_string& operator+=( std::initializer_list<CharT> ilist );

// (5) Non const version only
template < class StringViewLike >
constexpr basic_string& operator+=( const StringViewLike& t );

将额外字符附加到字符串。

  • (1) 附加字符串 str
  • (2) 附加字符 ch
  • (3) 附加由 s 指向的以 null 结尾的字符字符串。
  • (4) 附加初始化列表 ilist 中的字符。
  • (5)t 隐式转换为字符串视图 sv,如同通过 std::basic_string_view<CharT, Traits> sv = t;,然后附加字符串视图 sv 中的字符,如同通过 append(sv)
    重载决议

    此重载仅在 std::is_convertible_v<const StringViewLike&, std::basic_string_view<CharT, Traits>>truestd::is_convertible_v<const StringViewLike&, const CharT*>false 时参与重载决议。

参数

  • str - 要附加的字符串
  • ch - 要附加的字符值
  • s - 指向要附加的以 null 结尾的字符字符串的指针
  • ilist - 包含要附加字符的 std::initializer_list
  • t - 包含要附加字符的对象(可转换为 std::basic_string_view

返回值

*this

复杂度

重要

本节需要改进。您可以通过编辑此文档页面来帮助我们。

没有标准复杂性保证,典型实现的行为类似于 std::vector::insert()

异常

如果操作导致 size() > max_size(),则抛出std::length_error

在任何情况下,如果由于任何原因抛出异常,此函数无效(强异常保证)。 (自 C++11 起)

备注

注意

重载 (2) 可以接受任何可隐式转换为 CharT 的类型。
对于 std::string,其中 CharTchar,可接受的类型集包括所有算术类型。

这可能会产生意外效果。

示例

Main.cpp
#include <iostream>
#include <iomanip>
#include <string>

int main()
{
std::string str;
str.reserve(50); //reserves sufficient storage space to avoid memory reallocation
std::cout << std::quoted(str) << '\n'; //empty string

str += "This";
std::cout << std::quoted(str) << '\n';

str += std::string(" is ");
std::cout << std::quoted(str) << '\n';

str += 'a';
std::cout << std::quoted(str) << '\n';

str += {' ','s','t','r','i','n','g','.'};
std::cout << std::quoted(str) << '\n';

str += 76.85; // equivalent to str += static_cast<char>(76.85), might not be the intent
std::cout << std::quoted(str) << '\n';
}
输出
""
"This"
"This is "
"This is a"
"This is a string."
"This is a string.L"
本文源自此 CppReference 页面。它可能为了改进或编辑者偏好而进行了修改。点击“编辑此页面”查看本文档的所有更改。
悬停查看原始许可证。