FreeBSD Manual Pages
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)
NAME | Synopsis | Parameters | Type requirements | Return value | Complexity | Exceptions | Example | Output: | C-style | C-style | C-style | See also
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::wstring::assign&sektion=3&manpath=FreeBSD+Ports+15.0>
