std::string operator+=
- 自 C++20 起
- 自 C++17 起
- 自 C++11 起
- 直到 C++11
// (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) Non const version only
basic_string& operator+=( const basic_string& str );
// (2) Non const version only
basic_string& operator+=( CharT ch );
// (3) Non const version only
basic_string& operator+=( const CharT* s );
// (4) Non const version only
basic_string& operator+=( std::initializer_list<CharT> ilist );
// (5) Non const version only
template < class StringViewLike >
basic_string& operator+=( const StringViewLike& t );
// (1) Non const version only
basic_string& operator+=( const basic_string& str );
// (2) Non const version only
basic_string& operator+=( CharT ch );
// (3) Non const version only
basic_string& operator+=( const CharT* s );
// (4) Non const version only
basic_string& operator+=( std::initializer_list<CharT> ilist );
// (1) Non const version only
basic_string& operator+=( const basic_string& str );
// (2) Non const version only
basic_string& operator+=( CharT ch );
// (3) Non const version only
basic_string& operator+=( const CharT* s );
将额外字符附加到字符串。
- (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>>
为true
且std::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
。
备注
重载 (2) 可以接受任何可隐式转换为 CharT
的类型。
对于 std::string
,其中 CharT
是 char
,可接受的类型集包括所有算术类型。
这可能会产生意外效果。
示例
#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"