Diferencia entre revisiones de «cpp/string/basic string/assign»
De cppreference.com
< cpp | string | basic string
m (1 revisión: Translate from the English version) |
m (Cosmético) |
||
(No se muestran 6 ediciones intermedias realizadas por 4 usuarios) | |||
Línea 1: | Línea 1: | ||
{{cpp/string/basic_string/title | assign}} | {{cpp/string/basic_string/title | assign}} | ||
{{cpp/string/basic_string/navbar}} | {{cpp/string/basic_string/navbar}} | ||
− | {{ | + | {{begin}} |
− | {{ | + | {{| num=1 |
+ | | | ||
basic_string& assign( size_type count, CharT ch ); | basic_string& assign( size_type count, CharT ch ); | ||
+ | |||
+ | |||
}} | }} | ||
− | {{ | + | {{| num=2 |
+ | | | ||
basic_string& assign( const basic_string& str ); | basic_string& assign( const basic_string& str ); | ||
+ | |||
+ | |||
}} | }} | ||
− | {{ | + | {{| num=3 |
+ | | | ||
basic_string& assign( const basic_string& str, | basic_string& assign( const basic_string& str, | ||
− | size_type pos, | + | size_type pos |
− | size_type count ); | + | |
+ | , | ||
+ | |||
+ | |||
+ | |||
+ | size_type count ); | ||
}} | }} | ||
− | {{ | + | {{| num=4 |
+ | | =c++11 | | ||
basic_string& assign( basic_string&& str ); | basic_string& assign( basic_string&& str ); | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
}} | }} | ||
− | {{ | + | {{| num=5 |
− | basic_string& assign( const CharT* s, | + | | |
− | + | basic_string& assign( const CharT* s, | |
+ | |||
+ | size_type count ); | ||
}} | }} | ||
− | {{ | + | {{| num=6 |
+ | | | ||
basic_string& assign( const CharT* s ); | basic_string& assign( const CharT* s ); | ||
+ | |||
+ | |||
}} | }} | ||
− | {{ | + | {{| num=7 |
+ | | = | ||
template< class InputIt > | template< class InputIt > | ||
basic_string& assign( InputIt first, InputIt last ); | basic_string& assign( InputIt first, InputIt last ); | ||
+ | |||
+ | |||
+ | |||
}} | }} | ||
− | {{ | + | {{| num=8 |
+ | | =c++11 | = | ||
basic_string& assign( std::initializer_list<CharT> ilist ); | basic_string& assign( std::initializer_list<CharT> ilist ); | ||
+ | |||
+ | |||
}} | }} | ||
− | {{ | + | {{ |
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | end}} | ||
− | + | Reemplaza el contenido de la cadena. | |
− | 1 | + | 1Reemplaza el contenido con {{tt|count}} {{tt|ch}} |
− | 2 | + | 2Reemplaza el contenido una copia de {{tt|str}}a {{|str}}}} |
− | 3 | + | 3Reemplaza el contenido {{tt|[pos, pos+count)}} de {{tt|str}}. Si la subcadena más allá del final de la cadena, o si {{c|1=count == npos}}, la subcadena resultante es {{tt|[pos, size())}}. Si {{c|1=pos > str.size()}}, se {{|std::out_of_range}}. |
− | 4 | + | 4Reemplaza el contenido con de {{tt|str}} semántica de movimiento. {{|str}}de . |
− | 5 | + | 5Reemplaza el contenido con los {{tt|count}}. puede contener caracteres nulos. |
− | 6 | + | 6Reemplaza el contenido con de cadena de caracteres terminada en {{tt|s}}. La longitud de la cadena se determina por el primer carácter nulo {{|s}}. |
− | 7 | + | 7Reemplaza el contenido con copias de los {{tt|[first, last)}}|{{tt|}}}} |
− | 8) {{ | + | 8 |
+ | |||
+ | ) | ||
+ | |||
+ | {{|el contenido con los de la de {{tt|}}. |{{tt|}}.}} | ||
===Parámetros=== | ===Parámetros=== | ||
− | {{ | + | {{begin}} |
− | {{ | + | {{| count | de la cadena resultante}} |
− | {{ | + | }} |
− | {{ | + | {{| ch | inicializar caracteres de la cadena}} |
− | {{ | + | {{| first, last | copiar los caracteres}} |
− | {{ | + | {{| str | a como fuente inicializar }} |
− | {{ | + | {{| s | a una cadena de caracteres inicializar la cadena |
− | {{ | + | | }} }} |
− | {{ | + | {{| | {{|inicializar la cadena}} |
− | {{ | + | {{hreq}} |
+ | {{req | InputIt | InputIterator}} | ||
+ | {{end}} | ||
===Valor de retorno=== | ===Valor de retorno=== | ||
Línea 66: | Línea 120: | ||
===Complejidad=== | ===Complejidad=== | ||
− | |||
− | + | en {{tt|}} | |
− | + | en {{tt|}} | |
− | + | {{tt|}}. | |
− | + | {{tt|}} |{{}} }} | |
− | + | en {{tt|}} | |
− | + | en {{tt|}} | |
− | + | {{| | |
+ | |||
+ | en el tamaño de {{tt|}} | ||
+ | |||
+ | |||
+ | | | ||
+ | |||
+ | |||
+ | {{tt| | ||
+ | |||
+ | |||
+ | |||
+ | }} }} | ||
===Ejemplo=== | ===Ejemplo=== | ||
{{example | {{example | ||
| code= | | code= | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
| output= | | output= | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
}} | }} | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
− | === | + | ===también=== |
− | {{ | + | {{begin}} |
− | {{ | + | {{| cpp/string/basic_string/constructor}} |
− | {{ | + | {{| cpp/string/basic_string/operator{{=}}}} |
− | {{ | + | {{end}} |
− | + | itjaplptru | |
− | + | ||
− | + | ||
− | + | ||
− | + |
Última revisión de 07:31 1 oct 2020
(1) | ||
basic_string& assign( size_type count, CharT ch ); |
(hasta C++20) | |
constexpr basic_string& assign( size_type count, CharT ch ); |
(desde C++20) | |
(2) | ||
basic_string& assign( const basic_string& str ); |
(hasta C++20) | |
constexpr basic_string& assign( const basic_string& str ); |
(desde C++20) | |
(3) | ||
basic_string& assign( const basic_string& str, size_type pos, size_type count ); |
(hasta C++14) | |
basic_string& assign( const basic_string& str, size_type pos, size_type count = npos); |
(desde C++14) (hasta C++20) |
|
constexpr basic_string& assign( const basic_string& str, size_type pos, size_type count = npos); |
(desde C++20) | |
(4) | ||
basic_string& assign( basic_string&& str ); |
(desde C++11) (hasta C++17) |
|
basic_string& assign( basic_string&& str ) noexcept(/* véase más abajo */); |
(desde C++17) (hasta C++20) |
|
constexpr basic_string& assign( basic_string&& str ) noexcept(/* véase más abajo */); |
(desde C++20) | |
(5) | ||
basic_string& assign( const CharT* s, size_type count ); |
(hasta C++20) | |
constexpr basic_string& assign( const CharT* s, size_type count ); |
(desde C++20) | |
(6) | ||
basic_string& assign( const CharT* s ); |
(hasta C++20) | |
constexpr basic_string& assign( const CharT* s ); |
(desde C++20) | |
(7) | ||
template< class InputIt > basic_string& assign( InputIt first, InputIt last ); |
(hasta C++20) | |
template< class InputIt > constexpr basic_string& assign( InputIt first, InputIt last ); |
(desde C++20) | |
(8) | ||
basic_string& assign( std::initializer_list<CharT> ilist ); |
(desde C++11) (hasta C++20) |
|
constexpr basic_string& assign( std::initializer_list<CharT> ilist ); |
(desde C++20) | |
(9) | ||
template < class T > basic_string& assign( const T& t ); |
(desde C++17) (hasta C++20) |
|
template < class T > constexpr basic_string& assign( const T& t ); |
(desde C++20) | |
(10) | ||
template < class T > basic_string& assign( const T& t, |
(desde C++17) (hasta C++20) |
|
template < class T > constexpr basic_string& assign( const T& t, |
(desde C++20) | |
Reemplaza el contenido de la cadena.
1) Reemplaza el contenido con
count
copias del carácter ch
.2) Reemplaza el contenido con una copia de
str
. Equivalente a *this = str;. En particular, puede tomar lugar la propagación del asignador de memoria. (desde C++11)3) Reemplaza el contenido conm una subcadena
[pos, pos+count)
de str
. Si la subcadena requerida va más allá del final de la cadena, o si count == npos, la subcadena resultante es [pos, str.size())
. Si pos > str.size(), se lanza std::out_of_range. 4) Reemplaza el contenido con el de
str
usando semántica de movimiento. Equivalente a *this = std::move(str). En particular, puede tomar lugar la propagación del asignador de memoria.5) Reemplaza el contenido con copias de los caracters en el rango
[s, s+count)
. Este rango puede contener caracteres nulos.6) Reemplaza el contenido con el de la cadena de caracteres terminada en nulo apuntada por
s
. La longitud de la cadena se determina por el primer carácter nulo usando Traits::length(s). 7) Reemplaza el contenido con copias de los caracters en el rango
[first, last)
. Esta sobrecarga no participa en la resolución de sobrecarga si InputIt
no satisface a InputIterator. (desde C++11)8) Reemplaza el contenido con el de la lista de inicializadores
ilist
.9) Implícitamente convierte
t
a una vista sobre cadena sv
como si fuera mediante std::basic_string_view<CharT, Traits> sv = t;, entonces reemplaza el contenido con el de sv
, como si fuera mediante assign(sv.data(), sv.size()). Esta sobrecarga solo participa en la resolución de sobrecargas si std::is_convertible_v<const T&, std::basic_string_view<CharT, Traits>> es true y std::is_convertible_v<const T&, const CharT*> es false.10) Implícitamente convierte
t
a una vista sobre cadena sv
como si fuera mediante std::basic_string_view<CharT, Traits> sv = t;, entonces reemplaza el contenido con los caracteres de la subvista [pos, pos+count)
de sv
. Si la subvista requerida va más allá del final de sv
, o si count == npos, la subvista resultante es [pos, sv.size())
. Si pos > sv.size(), se lanza std::out_of_range.. Esta sobrecarga solo participa en la resolución de sobrecargas si std::is_convertible_v<const T&, std::basic_string_view<CharT, Traits>> es true y std::is_convertible_v<const T&, const CharT*> es false.Contenido |
[editar] Parámetros
count | - | Tamaño de la cadena resultante. |
pos | - | Índice del primer carácter a tomar. |
ch | - | Valor con el cual inicializar los caracteres de la cadena. |
first, last | - | Rango del cual copiar los caracteres. |
str | - | Cadena a usarse como fuente con la cual inicializar la cadena. |
s | - | Puntero a una cadena de caracteres terminada en nulo con el cual inicializar la cadena. |
ilist | - | std::initializer_list con la cual inicializar la cadena. |
t | - | Objeto convertible a std::basic_string_view) con el cual inicializar la cadena. |
Requisitos de tipo | ||
-InputIt debe satisfacer los requisitos de InputIterator.
|
[editar] Valor de retorno
*this
[editar] Complejidad
1) Lineal en
count
.2) Lineal en el tamaño de
str
.3) Lineal en
count
.4) Constante. Si se da
alloc
y alloc != other.get_allocator(), entonces es lineal.5) Lineal en
count
6) Lineal en el tamaño de
s
.7) Lineal en la distancia entre
first
y last
.8) Lineal en el tamaño de
ilist
.[editar] Excepciones
Si por alguna razón se lanza una excepción, esta función no tiene efecto (garantía de excepción fuerte). (desde C++11)
Si la operación resultara en size() > max_size()
, se lanza std::length_error.
4)
Especificación noexcept: (desde C++11)
EjemploEjecuta este código #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("Ejemplario"); // assign(basic_string const& str) s.assign(c); std::cout << c << "==" << s <<'\n'; // "Ejemplario == Ejemplario" // assign(basic_string const& str, size_type pos, size_type count) s.assign(c, 0, c.length()-1); std::cout << s << '\n'; // "Ejemplar"; // assign(basic_string&& str) s.assign(std::string("C++ por medio de ") + "ejemplos"); std::cout << s << '\n'; // "C++ por medio de ejemplos" // assign(charT const* s, size_type count) s.assign("estilo C string", 7); std::cout << s << '\n'; // "estilo C" // assign(charT const* s) s.assign("estilo C\0string"); std::cout << s << '\n'; // "estilo C" char mutable_c_str[] = "cadena estilo C"; // assign(InputIt first, InputIt last) s.assign(std::begin(mutable_c_str), std::end(mutable_c_str)-1); std::cout << s << '\n'; // "cadena estilo C" // assign(std::initializer_list<charT> ilist) s.assign({ 'C', '-', 's', 't', 'y', 'l', 'e' }); std::cout << s << '\n'; // "estilo C" } Salida: ==== Ejemplario==Ejemplario Ejemplar C++ por medio de ejemplos estilo C estilo C cadena estilo C estilo C |
(desde C++17) |
[editar] Informes de defectos
Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.
ID | Aplicado a | Comportamiento según lo publicado | Comportamiento correcto |
---|---|---|---|
LWG 2063 | C++11 | Nota no-normativa establecía que swap es unaimplementación válida de la asignación de movimiento |
Corregida para soportar asignadores de memoria |
LWG 2579 | C++11 | assign(const basic_string&) no propaga los asignadores de memoria
|
Se hizo que propagara los asignadores si es necesario |
LWG 2946 | C++17 | Sobrecarga de string_view causa ambigüedaden algunos casos |
Se evitó haciéndola una plantilla |
[editar] Véase también
Construye una cadena basic_string (función miembro pública) | |
Asigna valores a la cadena (función miembro pública) |