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 basic_string& str );
    (1) (constexpr since C++20)
  
   basic_string& operator+=( CharT ch ); (2) (constexpr since C++20)
  
   basic_string& operator+=( const CharT* s ); (3) (constexpr since
    C++20)
  
   basic_string& operator+=( std::initializer_list<CharT> (4)
    (since C++11)
  
   ilist ); (constexpr since C++20)
  
   template< class StringViewLike > (5) (since C++17)
  
   basic_string& operator+=( const StringViewLike& t ); (constexpr since
    C++20)
  
   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 the operation would result in size() > max_size(), throws std::length_error.
  
   If an exception is thrown for any reason, this function has no effect (strong
  
   exception safety guarantee).
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.
Example¶
// Run this code
  
   #include <iomanip>
  
   #include <iostream>
  
   #include <string>
  
   int main()
  
   {
  
   std::string str;
  
   // reserve sufficient storage space to avoid memory reallocation
  
   str.reserve(50);
  
   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 += 69.96; // Equivalent to str += static_cast<char>(69.96);
  
   // 'E' (ASCII code 69) is appended by overload (2),
  
   // which might not be the intent.
  
   // To add a numeric value, consider std::to_string():
  
   str += std::to_string(1729);
  
   std::cout << std::quoted(str) << '\n';
  
   }
Output:¶
 ""
  
   "This"
  
   "This is "
  
   "This is a"
  
   "This is a string."
  
   "This is a string.E1729"
  
   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 847 C++98 there was no exception safety added strong exception safety
  
   guarantee guarantee
  
   LWG 2946 C++17 overload (5) caused ambiguity in avoided by making it a
  
   some cases template
See also¶
 append appends characters to the end
  
   (public member function)
| 2024.06.10 | http://cppreference.com |