table of contents
        
      
      
    | std::basic_string::append(3) | C++ Standard Libary | std::basic_string::append(3) | 
NAME¶
std::basic_string::append - std::basic_string::append
Synopsis¶
basic_string& append( (until size_type count, CharT ch );
    C++20) constexpr basic_string& (since append( size_type count, C++20)
    CharT ch ); basic_string& append( const (until basic_string& str );
    C++20) constexpr basic_string& (since append( const basic_string&
    C++20) str ); basic_string& append( const basic_string& str, (until
    size_type pos, size_type C++14) count ); basic_string& append( const
    (since basic_string& str, C++14) size_type pos, size_type (until count =
    npos ); C++20) constexpr basic_string& append( const basic_string&
    (since str, C++20) size_type pos, size_type count = npos );
    basic_string& append( const (until CharT* s, size_type count ); C++20)
    constexpr basic_string& (since append( const CharT* s, C++20) size_type
    count ); basic_string& append( const (until CharT* s ); C++20) constexpr
    basic_string& (since append( const CharT* s ); C++20) template< class
    InputIt > basic_string& append( (until InputIt first, InputIt last
    C++20) ); template< class InputIt > (1) constexpr
    basic_string& (since append( InputIt first, C++20) InputIt last );
    (2) basic_string& append( (since
    std::initializer_list<CharT> (3) C++11) ilist ); (until
  
   C++20) constexpr basic_string& append( (since
    std::initializer_list<CharT> C++20) ilist ); template < class
    (4) (since StringViewLike > C++17) basic_string& append( const
    (5) (until StringViewLike& t ); C++20) template < class
    (6) StringViewLike > (since constexpr basic_string& C++20)
    append( const StringViewLike& t ); (7) template < class
    StringViewLike >
  
   (since basic_string& append( const (8) C++17) StringViewLike&
    t, (until
  
   C++20) size_type pos, size_type count = npos ); template < class
    (9) StringViewLike >
constexpr basic_string& (since append( const C++20) StringViewLike& t,
size_type pos, size_type count = npos );
  
   Appends additional characters to the string.
  
   1) Appends count copies of character ch
  
   2) Appends string str
  
   3) Appends a substring [pos, pos+count) of str. If the requested substring
    lasts
  
   past the end of the string, or if count == npos, the appended substring is
    [pos,
  
   size()). If pos > str.size(), std::out_of_range is thrown.
  
   4) Appends characters in the range [s, s + count). This range can contain
    null
  
   characters.
  
   5) Appends the null-terminated character string pointed to by s. The length
    of the
  
   string is determined by the first null character using Traits::length(s).
  
   6) Appends characters in the range [first, last).
  
   This overload has the same effect as overload (1) if InputIt is an
    (until C++11)
  
   integral type.
  
   This overload only participates in overload resolution if InputIt (since
    C++11)
  
   qualifies as an LegacyInputIterator
  
   7) Appends characters from the initializer list ilist.
  
   8) Implicitly converts t to a string view sv as if by
    std::basic_string_view<CharT,
  
   Traits> sv = t;, then appends all characters from sv as if by
    append(sv.data(),
  
   sv.size()). 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.
  
   9) Implicitly converts t to a string view sv as if by
    std::basic_string_view<CharT,
  
   Traits> sv = t;, then appends the characters from the subview [pos,
    pos+count) of
  
   sv. If the requested subview extends past the end of sv, or if count == npos,
    the
  
   appended subview is [pos, sv.size()). If pos >= sv.size(),
    std::out_of_range is
  
   thrown. 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¶
 count - number of characters to append
  
   pos - the index of the first character to append
  
   ch - character value to append
  
   first, last - range of characters to append
  
   str - string to append
  
   s - pointer to the character string to append
  
   ilist - 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.
  
   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 <string>
  
   #include <iostream>
  
   int main() {
  
   std::basic_string<char> str = "string";
  
   const char* cptr = "C-string";
  
   const char carr[] = "Two and one";
  
   std::string output;
  
   // 1) Append a char 3 times.
  
   // Notice, this is the only overload accepting chars.
  
   output.append(3, '*');
  
   std::cout << "1) " << output <<
  "\n";
  
   // 2) Append a whole string
  
   output.append(str);
  
   std::cout << "2) " << output <<
  "\n";
  
   // 3) Append part of a string (last 3 letters, in this case)
  
   output.append(str, 3, 3);
  
   std::cout << "3) " << output <<
  "\n";
  
   // 4) Append part of a C-string
  
   // Notice, because `append` returns *this, we can chain calls together
  
   output.append(1, ' ').append(carr, 4);
  
   std::cout << "4) " << output <<
  "\n";
  
   // 5) Append a whole C-string
  
   output.append(cptr);
  
   std::cout << "5) " << output <<
  "\n";
  
   // 6) Append range
  
   output.append(&carr[3], std::end(carr));
  
   std::cout << "6) " << output <<
  "\n";
  
   // 7) Append initializer list
  
   output.append({ ' ', 'l', 'i', 's', 't' });
  
   std::cout << "7) " << output << "\n";
  
   }
Output:¶
 1) ***
  
   2) ***string
  
   3) ***stringing
  
   4) ***stringing Two
  
   5) ***stringing Two C-string
  
   6) ***stringing Two C-string and one
  
   7) ***stringing Two C-string and one list
See also¶
 operator+= appends characters to the end
  
   (public member function)
  
   strcat concatenates two strings
  
   (function)
  
   strncat concatenates a certain amount of characters of two strings
  
   (function)
  
   wcscat appends a copy of one wide string to another
  
   (function)
  
   appends a certain amount of wide characters from one wide string to
  
   wcsncat another
  
   (function)
| 2022.07.31 | http://cppreference.com |