std::string assign() method
- od C++20
- od C++17
- od C++11
- do C++11
// (1) Non const version only
constexpr basic_string& assign( size_type count, CharT ch );
// (2) Non const version only
constexpr basic_string& assign( const basic_string& str );
// (3) Non const version only
constexpr basic_string& assign( const basic_string& str,
size_type pos, size_type count = npos);
// (4) Non const version only
constexpr basic_string& assign( basic_string&& str ) noexcept(/* see below */);
// (5) Non const version only
constexpr basic_string& assign( const CharT* s, size_type count );
// (6) Non const version only
constexpr basic_string& assign( const CharT* s );
// (7) Non const version only
template< class InputIt >
constexpr basic_string& assign( InputIt first, InputIt last );
// (8) Non const version only
constexpr basic_string& assign( std::initializer_list<CharT> ilist );
// (9) Non const version only
template < class StringViewLike >
constexpr basic_string& assign( const StringViewLike& t );
// (10) Non const version only
template < class StringViewLike >
constexpr basic_string& assign( const StringViewLike& t,
size_type pos, size_type count = npos);
// (1) Non const version only
basic_string& assign( size_type count, CharT ch );
// (2) Non const version only
basic_string& assign( const basic_string& str );
// (3) Non const version only
basic_string& assign( const basic_string& str,
size_type pos, size_type count = npos);
// (4) Non const version only
basic_string& assign( basic_string&& str ) noexcept(/* see below */);
// (5) Non const version only
basic_string& assign( const CharT* s, size_type count );
// (6) Non const version only
basic_string& assign( const CharT* s );
// (7) Non const version only
template< class InputIt >
basic_string& assign( InputIt first, InputIt last );
// (8) Non const version only
basic_string& assign( std::initializer_list<CharT> ilist );
// (9) Non const version only
template < class StringViewLike >
basic_string& assign( const StringViewLike& t );
// (10) Non const version only
template < class StringViewLike >
basic_string& assign( const StringViewLike& t,
size_type pos, size_type count = npos);
// (1) Non const version only
basic_string& assign( size_type count, CharT ch );
// (2) Non const version only
basic_string& assign( const basic_string& str );
// (3) Non const version only
basic_string& assign( const basic_string& str,
size_type pos, size_type count );
// (4) Non const version only
basic_string& assign( basic_string&& str );
// (5) Non const version only
basic_string& assign( const CharT* s, size_type count );
// (6) Non const version only
basic_string& assign( const CharT* s );
// (7) Non const version only
template< class InputIt >
basic_string& assign( InputIt first, InputIt last );
// (8) Non const version only
basic_string& assign( std::initializer_list<CharT> ilist );
// (1) Non const version only
basic_string& assign( size_type count, CharT ch );
// (2) Non const version only
basic_string& assign( const basic_string& str );
// (3) Non const version only
basic_string& assign( const basic_string& str,
size_type pos, size_type count );
// (5) Non const version only
basic_string& assign( const CharT* s, size_type count );
// (6) Non const version only
basic_string& assign( const CharT* s );
// (7) Non const version only
template< class InputIt >
basic_string& assign( InputIt first, InputIt last );
Replaces the contents of the string.
-
(1) Replaces the contents with
countcopies of characterch. -
(2) Replaces the contents with a copy of
str. Equivalent to*this = str;.
In particular, allocator propagation may take place. (od C++11) -
(3) Replaces the contents with a substring [ pos, pos +
count) ofstr.
If the requested substring lasts past the end of the string, or ifcount == npos, the resulting substring is [ pos, str.size() ). Ifpos > str.size(),std::out_of_rangeis thrown. -
(4) Replaces the contents with those of
strusing 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 character usingTraits::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
InputItdoes not satisfyLegacyInputIterator. (od C++11) -
(8) Replaces the contents with those of the initializer list
ilist. -
(9) Implicitly converts
tto a string viewsvas if bystd::basic_string_view<CharT, Traits> sv = t;, then replaces the contents with those ofsv, as if byassign(sv.data(), sv.size()).Overload ResolutionThis overload participates in overload resolution only if
std::is_convertible_v<const StringViewLike&, std::basic_string_view<CharT, Traits>>istrueandstd::is_convertible_v<const StringViewLike&, const CharT*>isfalse. -
(10) Implicitly converts
tto a string viewsvas if bystd::basic_string_view<CharT, Traits> sv = t;, then replaces the contents with the characters from the subview [ pos, pos + count ) ofsv.
If the requested subview lasts past the end ofsv, or ifcount == npos, the resulting subview is [ pos, sv.size() ). Ifpos > sv.size(),std::out_of_rangeis thrown.Overload ResolutionThis overload participates in overload resolution only if
std::is_convertible_v<const StringViewLike&, std::basic_string_view<CharT, Traits>>istrueandstd::is_convertible_v<const StringViewLike&, const CharT*>isfalse.
Parameters
count- size of the resulting stringpos- index of the first character to takech- value to initialize characters of the string withfirst,last- range to copy the characters fromstr- string to be used as source to initialize the characters withs- pointer to a character string to use as source to initialize the string withilist-std::initializer_listto initialize the characters of the string witht- object (convertible tostd::basic_string_view) to initialize the characters of the string with
Type requirements
- (7) -
InputItmust meet the requirements ofLegacyInputIterator.
Return value
*this
Complexity
- (1) Linear in
count- O(count). - (2) Linear in size of
str- O(str.size()). - (3) Linear in
count- O(count). - (4)
Constant - O(1). Ifallocis given andalloc != other.get_allocator(), then linear in size - O(size()). - (5) Linear in
count- O(count). - (6) Linear in size of
s- O(s.size()). - (7) Linear in distance [ first, last ) - O(std::distance(first, last)).
- (8) Linear in size of
ilist- O(ilist.size()).
Exceptions
- od C++17
- (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.
Example
#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"
}
====
Exemplary == Exemplary
Exemplar
C++ by example
C-style
C-style
C-style string
C-style
Hover to see the original license.