std::basic_string<CharT,Traits,Allocator>::copy
size_type copy( CharT* dest, size_type count, size_type pos = 0 ) const;
|
(constexpr depuis C++20) | |
Copie une sous-chaîne [pos, pos + count) vers la chaîne de caractères pointée par dest. Si la sous-chaîne demandée dépasse la fin de la chaîne, ou si count == npos, la sous-chaîne copiée est [pos, size()).
La chaîne de caractères résultante n'est pas terminée par un caractère nul.
Paramètres
| dest | - | pointeur vers la chaîne de caractères de destination |
| count | - | longueur de la sous-chaîne |
| pos | - | position du premier caractère à inclure |
Valeur de retour
Nombre de caractères copiés.
Exceptions
std::out_of_range si pos > size ( ) .
Si une exception est levée pour quelque raison que ce soit, cette fonction n'a aucun effet ( strong exception safety guarantee ).
Complexité
Linéaire en count .
Exemple
#include <iostream> #include <string> int main() { std::string foo("WINE"); // l'initialisation par accolades initialise tous les caractères à 0, // fournissant un terminateur nul char bar[4]{}; // ne pas copier le dernier caractère, pour garantir la null-termination foo.copy(bar, sizeof bar - 1); std::cout << bar << '\n'; // nécessite que bar soit null-terminated }
Sortie :
WIN
Rapports de défauts
Les rapports de défauts modifiant le comportement suivants ont été appliqués rétroactivement aux normes C++ précédemment publiées.
| DR | Appliqué à | Comportement tel que publié | Comportement correct |
|---|---|---|---|
| LWG 847 | C++98 | il n'y avait aucune garantie de sûreté des exceptions | garantie de sûreté forte des exceptions ajoutée |
Voir aussi
| retourne une sous-chaîne (fonction membre publique) | |
| copie des caractères (fonction membre publique de std::basic_string_view<CharT,Traits>)
| |
(C++11) |
copie une plage d'éléments vers un nouvel emplacement (modèle de fonction & objet fonction d'algorithme) |
(C++20)(C++20) |
|
| copie un tampon vers un autre (fonction) |