table of contents
std::basic_string::operator+=(3) | C++ Standard Libary | std::basic_string::operator+=(3) |
NAME¶
std::basic_string::operator+= - std::basic_string::operator+=
Synopsis¶
basic_string& operator+=( const (until
basic_string& str ); C++20)
constexpr basic_string& operator+=( (since
const basic_string& str ); C++20)
basic_string& operator+=( CharT ch (until
); C++20)
constexpr basic_string& operator+=( (since
CharT ch ); C++20)
basic_string& operator+=( const (until
CharT* s ); C++20)
constexpr basic_string& operator+=( (since
const CharT* s ); C++20)
basic_string& operator+=( (1) (since
std::initializer_list<CharT> ilist C++11)
); (2) (until
C++20)
constexpr basic_string& operator+=( (3) (since
std::initializer_list<CharT> ilist C++20)
); (4)
template < class StringViewLike > (since
basic_string& operator+=( const C++17)
StringViewLike& t ); (until
(5) C++20)
template < class StringViewLike > (since
constexpr basic_string& operator+=( C++20)
const StringViewLike& t );
Appends additional characters to the string.
1) Appends string str
2) Appends character ch
3) Appends the null-terminated character string pointed to by s.
4) Appends characters in the initializer list ilist.
5) Implicitly converts t to a string view sv as if by
std::basic_string_view<CharT,
Traits> sv = t;, then appends characters in the string view sv as if by
append(sv).
This overload participates in overload resolution only if
std::is_convertible_v<const StringViewLike&,
std::basic_string_view<CharT, Traits>>
is true and std::is_convertible_v<const StringViewLike&, const
CharT*> is false.
Parameters¶
str - string to append
ch - character value to append
s - pointer to a null-terminated character string to append
ilist - std::initializer_list with the characters to append
t - object (convertible to std::basic_string_view) with the characters to
append
Return value¶
*this
Complexity¶
There are no standard complexity guarantees, typical
implementations behave similar
to std::vector::insert.
Exceptions¶
If an exception is thrown for any reason, this function has no
effect (strong
exception guarantee).
(since C++11)
If the operation would result in size() > max_size(), throws
std::length_error.
Notes¶
Overload (2) can accept any types that are implicitly
convertible to CharT. For
std::string, where CharT is char, the set of acceptable types includes all
arithmetic types. This may have unintended effects.
Defect reports
The following behavior-changing defect reports were applied retroactively to
previously published C++ standards.
DR Applied to Behavior as published Correct behavior
LWG 2946 C++17 string_view overload causes ambiguity in avoided by making it
a
some cases template
Example¶
// Run this code
#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';
}
Output:¶
""
"This"
"This is "
"This is a"
"This is a string."
"This is a string.L"
See also¶
append appends characters to the end
(public member function)
2022.07.31 | http://cppreference.com |