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(	size_type count, CharT	 (1) (constexpr	since
	  ch );						     C++20)
	  basic_string&	assign(	const basic_string& str	 (2) (constexpr	since
	  );						     C++20)
	  basic_string&	assign(	const basic_string& str,
				size_type	     pos,	     size_type
       (until C++14)
	  count	);
	  basic_string&	     assign(	  const	      basic_string&	  str,
       (since C++14)
				size_type	     pos,	     size_type
       (constexpr since
	  count				   =				npos);
       C++20)
	  basic_string&	       assign(	      basic_string&&	   str	     )
       (since C++11)
	  noexcept(/*	 see	below	  */);				   (4)
       (constexpr since
									      C++20)
	  basic_string&	   assign(    const    CharT*	 s,		   (5)
       (constexpr since
	  size_type			     count			    );
       C++20)
	  basic_string&	   assign(    const   CharT*   s   );		   (6)
       (constexpr since
									      C++20)
	  template<	class	  InputIt      >			   (3)
       (constexpr since
	  basic_string&	   assign(    InputIt	 first,	   InputIt	   (7)
       C++20)
	  last );
	  basic_string&						       assign(
       (since C++11)
	  std::initializer_list<CharT>	    ilist      );		   (8)
       (constexpr since
									      C++20)
	  template<		class		  StringViewLike	     >
       (since C++17)
	  basic_string&	   assign(    const    StringViewLike&	  t	   (9)
       (constexpr since
	  );
       C++20)
	  template< class StringViewLike >
									      (since
       C++17)
	  basic_string&	  assign(   const    StringViewLike&	t,	  (10)
       (constexpr since
									      C++20)
				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::basic_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::basic_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.
	  9) Linear in size of t.

Exceptions
	  4)
	  noexcept specification:
	  noexcept(std::allocator_traits<Allocator>::

		       propagate_on_container_move_assignment::value ||

		   std::allocator_traits<Allocator>::is_always_equal::value)

	  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 ef-
       fect (strong
	  exception safety guarantee).

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(const basic_string& str)
	    s.assign(c);
	    std::cout << c << "	== " <<	s << '\n'; // "Exemplary == Exemplary"

	    // assign(const basic_string& 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(const CharT* s, size_type	count)
	    s.assign("C-style string", 7);
	    std::cout << s << '\n'; // "C-style"

	    // assign(const CharT* 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 847  C++98      there was	no exception safety	  added	strong
       exception
			      guarantee				  safety guar-
       antee
			      non-normative note stated	that swap
	  LWG 2063 C++11      is				  corrected to
       require move
			      a	valid implementation of		  assignment
			      move-assign
	  LWG  2579  C++11	 assign(const  basic_string&)	       made to
       propagate allocators
			      did not propagate	allocators	  if needed
	  LWG 2946 C++17      overload (9) caused ambiguity in	   avoided  by
       making it a
			      some cases			  template

See also
	  assign_range	assign a range of characters to	a string
	  (C++23)	(public	member function)
	  constructor	constructs a basic_string
			(public	member function)
	  operator=	assigns	values to the string
			(public	member function)

Category:
	    * conditionally noexcept

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

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

home | help