std::basic_string<CharT,Traits,Allocator>:: resize
|
void
resize
(
size_type count
)
;
|
(1) | (constexpr depuis C++20) |
|
void
resize
(
size_type count, CharT ch
)
;
|
(2) | (constexpr depuis C++20) |
Redimensionne la chaîne pour contenir count caractères.
Si la taille actuelle est inférieure à count , des caractères supplémentaires sont ajoutés :
CharT
est
char
).
Si la taille actuelle est supérieure à count , la chaîne est réduite à ses premiers count éléments.
Table des matières |
Paramètres
| count | - | nouvelle taille de la chaîne |
| ch | - | caractère pour initialiser les nouveaux caractères |
Exceptions
std::length_error
si
count
>
max_size
(
)
est
true
.
Toutes les exceptions levées par l'allocateur correspondant
Allocator
.
Si une exception est levée pour quelque raison que ce soit, cette fonction n'a aucun effet ( garantie forte de sûreté face aux exceptions ).
Exemple
#include <iomanip> #include <iostream> #include <stdexcept> int main() { const unsigned desired_length{8}; std::string long_string("Where is the end?"); std::string short_string("H"); std::cout << "Fonctionnalité de base :\n" << "Raccourcir :\n" << "1. Avant : " << std::quoted(long_string) << '\n'; long_string.resize(desired_length); std::cout << "2. Après : " << std::quoted(long_string) << '\n'; std::cout << "Allonger avec une valeur donnée 'a' :\n" << "3. Avant : " << std::quoted(short_string) << '\n'; short_string.resize(desired_length, 'a'); std::cout << "4. Après : " << std::quoted(short_string) << '\n'; std::cout << "Allonger avec char() == " << static_cast<int>(char()) << '\n' << "5. Avant : " << std::quoted(short_string) << '\n'; short_string.resize(desired_length + 3); std::cout << "6. Après : \""; for (char c : short_string) std::cout << (c == char() ? '@' : c); std::cout << "\"\n\n"; std::cout << "Erreurs :\n"; std::string s; try { // size is OK, no length_error // (may throw bad_alloc) s.resize(s.max_size() - 1, 'x'); } catch (const std::bad_alloc& ex) { std::cout << "1. Exception : " << ex.what() << '\n'; } try { // size is OK, no length_error // (may throw bad_alloc) s.resize(s.max_size(), 'x'); } catch (const std::bad_alloc& ex) { std::cout << "2. Exception : " << ex.what() << '\n'; } try { // size is BAD, throw length_error s.resize(s.max_size() + 1, 'x'); } catch (const std::length_error& ex) { std::cout << "3. Erreur de longueur : " << ex.what() << '\n'; } }
Sortie possible :
Fonctionnalité de base : Raccourcir : 1. Avant : "Where is the end?" 2. Après : "Where is" Allonger avec une valeur donnée 'a' : 3. Avant : "H" 4. Après : "Haaaaaaa" Allonger avec char() == 0 5. Avant : "Haaaaaaa" 6. Après : "Haaaaaaa@@@" Erreurs : 1. Exception : std::bad_alloc 2. Exception : std::bad_alloc 3. Erreur de longueur : basic_string::_M_replace_aux
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 | Applicable à | Comportement publié | Comportement corrigé |
|---|---|---|---|
| LWG 847 | C++98 | aucune garantie de sécurité des exceptions n'était présente | garantie de sécurité forte des exceptions ajoutée |
| LWG 2250 | C++98 |
le comportement était indéfini si
count > max_size ( ) est true |
lève toujours une exception dans ce cas |
Voir aussi
|
renvoie le nombre de caractères
(fonction membre publique) |
|
|
réserve du stockage
(fonction membre publique) |
|
|
(
DR*
)
|
réduit l'utilisation de la mémoire en libérant la mémoire inutilisée
(fonction membre publique) |