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

FreeBSD Manual Pages

  
 
  

home | help
std::basic_string::assign(3)  C++ Standard Libary std::basic_string::assign(3)

NAME
       std::basic_string::assign - std::basic_string::assign

Synopsis
       basic_string&  assign(		      (until size_type count, CharT ch
       );	  C++20) constexpr basic_string&	       (since  assign(
       size_type  count,	      C++20) CharT ch ); basic_string& assign(
       const			  (until      basic_string&	  str	    );
       C++20) constexpr	basic_string&			  (since assign( const
       basic_string&		     C++20) str	); basic_string& assign( const
       basic_string&   str,				     (until  size_type
       pos, size_type				C++14) count );	 basic_string&
       assign(	  const				 (since	  basic_string&	  str,
       C++14) size_type	pos, size_type				 (until	 count
       =   npos);					C++20)	constexpr  ba-
       sic_string& assign( const  basic_string&				(since
       str,						    C++20)   size_type
       pos, size_type count = npos);
								 (since	   ba-
       sic_string&   assign(					   C++11)  ba-
       sic_string&& str	);				       (until
								 C++17)	   ba-
       sic_string&   assign(					   (since  ba-
       sic_string&& str	 )					 C++17)	 noex-
       cept(/* see below */);				     (until
								 C++20)	const-
       expr basic_string&				    (since assign( ba-
       sic_string&&  str )				C++20) noexcept(/* see
       below	     */);	  basic_string&		assign(		 const
       (until	      CharT*	    s,	      size_type	       count	    );
       C++20)			  constexpr			 basic_string&
       (since		 assign(	   const	   CharT*	    s,
       C++20)	 size_type    count    );    basic_string&    assign(	 const
       (until			CharT*			 s		    );
       C++20)			  constexpr			 basic_string&
       (since	    assign(	  const	     CharT*	 s	);	   (1)
       C++20) template<	class InputIt >	basic_string&  assign(		   (2)
       (until		InputIt		 first,		 InputIt	  last
       C++20) );  template<  class  InputIt  >		   (3)	constexpr  ba-
       sic_string&
       (since		    assign(		  InputIt		first,
       C++20)	   InputIt	last	  );	   basic_string&       assign(
       (since					  std::initializer_list<CharT>
       C++11)	   ilist       );					   (4)
       (until
											     C++20)
       constexpr		     basic_string&		       assign(
       (since					  std::initializer_list<CharT>
       C++20)  ilist );	template < class				   (5)
       (since			      StringViewLike			     >
       C++17)  basic_string&  assign(  const				   (6)
       (until		    StringViewLike&		   t		    );
       C++20)		      template		       <		 class
       (7)			    StringViewLike			     >
       (since			   constexpr			 basic_string&
       C++20)	    assign(	  const	      StringViewLike&	    t	    );
       (8) template < class StringViewLike >
													   (since
       basic_string&			   assign(			 const
       (9)			    C++17)	   StringViewLike&	    t,
       (until
													   C++20)
       size_type   pos,	  size_type   count   =	  npos);   template   <	 class
       (10) StringViewLike >

       constexpr						 basic_string&
       (since				assign(				 const
       C++20) StringViewLike& t,

       size_type pos, size_type	count =	npos);

	  Replaces the contents	of the string.

	  1) Replaces the contents with	count copies of	character ch.
	  2) Replaces the contents with	a copy of str. Equivalent to  *this  =
       str;.
	  In particular, allocator propagation may take	place.
	  (since C++11)
	  3)  Replaces	the contents with a substring [pos, pos+count) of str.
       If the requested
	  substring lasts past the end of the string, or if count == npos, the
       resulting
	  substring   is   [pos,   str.size()).	  If   pos    >	   str.size(),
       std::out_of_range is thrown.
	  4)  Replaces	the  contents  with those of str using move semantics.
       Equivalent to *this
	  = std::move(str). In	particular,  allocator	propagation  may  take
       place.
	  5)  Replaces the contents with copies	of the characters in the range
       [s, s+count).
	  This range can contain null characters.
	  6) Replaces the contents with	 those	of  null-terminated  character
       string pointed to
	  by s.	The length of the string is determined by the first null char-
       acter using
	  Traits::length(s).
	  7)  Replaces the contents with copies	of the characters in the range
       [first, last).
	  This overload	does not participate in	overload resolution if InputIt
       does not
	  satisfy LegacyInputIterator.
	  (since C++11)
	  8) Replaces the contents with	those of the initializer list ilist.
	  9) Implicitly	converts t to a	string	view  sv  as  if  by  std::ba-
       sic_string_view<CharT,
	  Traits>  sv =	t;, then replaces the contents with those of sv, as if
       by
	  assign(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.
	  10) Implicitly converts t to a string	view  sv  as  if  by  std::ba-
       sic_string_view<CharT,
	  Traits> sv = t;, then	replaces the contents with the characters from
       the subview
	  [pos,	 pos+count) of sv. If the requested subview lasts past the end
       of sv, or if
	  count	== npos, the resulting 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	      -	size of	the resulting string
	  pos	      -	index of the first character to	take
	  ch	      -	value to initialize characters of the string with
	  first, last -	range to copy the characters from
	  str	      -	string to be used as source to initialize the  charac-
       ters with
	  s	      -	pointer	to a character string to use as	source to ini-
       tialize the
			string with
	  ilist	       - std::initializer_list to initialize the characters of
       the string with
	  t	      -	object (convertible to std::basic_string_view) to ini-
       tialize the
			characters of the string with

Type requirements
	  -
	  InputIt must meet the	requirements of	LegacyInputIterator.

Return value
	  *this

Complexity
	  1) linear in count
	  2) linear in size of str
	  3) linear in count
	  4) constant. If alloc	is given and alloc  !=	other.get_allocator(),
       then linear.
	  5) linear in count
	  6) linear in size of s
	  7) linear in distance	between	first and last
	  8) linear in size of ilist

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.

       4)			 noexcept			specification:
       (since	  noexcept(std::allocator_traits<Allocator>::propagate_on_con-
       tainer_move_assignment::value  C++17)  || std::allocator_traits<Alloca-
       tor>::is_always_equal::value)

Example
       // Run this code

	#include <iostream>
	#include <iterator>
	#include <string>

	int main()
	{
	  std::string s;
	  // assign(size_type count, CharT ch)
	  s.assign(4, '=');
	  std::cout << s << '\n'; // "===="

	  std::string const c("Exemplary");
	  // assign(basic_string const&	str)
	  s.assign(c);
	  std::cout << c << " == " << s	<<'\n';	// "Exemplary == Exemplary"

	  // assign(basic_string const&	str, size_type pos, size_type count)
	  s.assign(c, 0, c.length()-1);
	  std::cout << s << '\n'; // "Exemplar";

	  // assign(basic_string&& str)
	  s.assign(std::string("C++ by ") + "example");
	  std::cout << s << '\n'; // "C++ by example"

	  // assign(charT const* s, size_type count)
	  s.assign("C-style string", 7);
	  std::cout << s << '\n'; // "C-style"

	  // assign(charT const* s)
	  s.assign("C-style\0string");
	  std::cout << s << '\n'; // "C-style"

	  char mutable_c_str[] = "C-style string";
	  // assign(InputIt first, InputIt last)
	  s.assign(std::begin(mutable_c_str), std::end(mutable_c_str)-1);
	  std::cout << s << '\n'; // "C-style string"

	  // assign(std::initializer_list<charT> ilist)
	  s.assign({ 'C', '-', 's', 't', 'y', 'l', 'e' });
	  std::cout << s << '\n'; // "C-style"
	}

Output:
	====
	Exemplary == Exemplary
	Exemplar
	C++ by example

C-style
C-style
	C-style	string

C-style
	 Defect	reports

	  The following	behavior-changing defect reports were applied retroac-
       tively to
	  previously published C++ standards.

	     DR	   Applied to	      Behavior as published		  Cor-
       rect behavior
	  LWG 2063 C++11      non-normative note stated	that swap is corrected
       to require move
			      a	 valid	implementation of move-assign  assign-
       ment
	  LWG 2579 C++11      assign(const basic_string&) doesn't     made  to
       propagate
			      propagate	 allocators		       alloca-
       tors if needed
	  LWG 2946 C++17      string_view overload causes  ambiguity   avoided
       by making it a
			      in some cases			     template

See also
	  constructor	constructs a basic_string
			(public	member function)
	  operator=	assigns	values to the string
			(public	member function)

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

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

home | help