Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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  ba-
       sic_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  ap-
       pend(   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  sub-
       string 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::ba-
       sic_string_view<CharT,
	  Traits> sv = t;, then	appends	all characters from sv as  if  by  ap-
       pend(sv.data(),
	  sv.size()).  This  overload participates in overload resolution only
       if
	  std::is_convertible_v<const	     StringViewLike&,	      std::ba-
       sic_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::ba-
       sic_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::ba-
       sic_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  ef-
       fect (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 retroac-
       tively 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				  tem-
       plate

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 to-
       gether
	    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)

http://cppreference.com		  2022.07.31	  std::basic_string::append(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::string::append&sektion=3&manpath=FreeBSD+Ports+15.0>

home | help