std::basic_string<CharT,Traits,Allocator>::copy
size_type copy( CharT* dest, size_type count, size_type pos = 0 ) const;
|
(constexpr desde C++20) | |
Copia una subcadena [pos, pos + count) a la cadena de caracteres apuntada por dest. Si la subcadena solicitada se extiende más allá del final de la cadena, o si count == npos, la subcadena copiada es [pos, size()).
La cadena de caracteres resultante no termina en nulo.
Parámetros
| dest | - | puntero a la cadena de caracteres de destino |
| count | - | longitud de la subcadena |
| pos | - | posición del primer carácter a incluir |
Valor de retorno
Número de caracteres copiados.
Excepciones
std::out_of_range si pos > size ( ) .
Si se lanza una excepción por cualquier razón, esta función no tiene efecto ( strong exception safety guarantee ).
Complejidad
Lineal en count .
Ejemplo
#include <iostream> #include <string> int main() { std::string foo("WINE"); // la inicialización con llaves inicializa todos los caracteres a 0, // proporcionando un terminador nulo char bar[4]{}; // no copiar el último carácter, para garantizar la terminación nula foo.copy(bar, sizeof bar - 1); std::cout << bar << '\n'; // requiere que bar esté terminado en nulo }
Salida:
WIN
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares publicados anteriormente de C++.
| DR | Aplicado a | Comportamiento publicado | Comportamiento correcto |
|---|---|---|---|
| LWG 847 | C++98 | no había garantía de seguridad de excepciones | se añadió garantía de seguridad fuerte de excepciones |
Véase también
| devuelve una subcadena (función miembro pública) | |
| copia caracteres (función miembro pública de std::basic_string_view<CharT,Traits>)
| |
(C++11) |
copia un rango de elementos a una nueva ubicación (plantilla de función & objeto función de algoritmo) |
(C++20)(C++20) |
|
| copia un búfer a otro (función) |