Comment convertir une chaîne de caractères en majuscules ? Les exemples que j'ai trouvés en cherchant sur Google ne concernent que les caractères.
struct convert {
void operator()(char& c) { c = toupper((unsigned char)c); }
};
// ...
string uc_str;
for_each(uc_str.begin(), uc_str.end(), convert());
Note: Il y a quelques problèmes avec la solution du haut :
21.5 Utilités des séquences à terminaison nulle
Le contenu de ces en-têtes doit être le même que celui des en-têtes de la bibliothèque C standard <ctype.h>, <wctype.h>, <string.h>, <wchar.h> et <stdlib.h> [...]
Ce qui signifie que les membres cctype
peuvent très bien être des macros qui ne conviennent pas à une consommation directe dans les algorithmes standards.
Un autre problème avec le même exemple est qu'il ne coule pas l'argument ou ne vérifie pas qu'il est non-négatif ; c'est particulièrement dangereux pour les systèmes où char
est signé. (La raison en est que si cette fonction est implémentée en tant que macro, elle utilisera probablement une table de recherche et votre argument sera indexé dans cette table. Un index négatif vous donnera UB).
Essayez la fonction toupper()
(#include <ctype.h>
). Elle accepte des caractères comme arguments, les chaînes de caractères sont composées de caractères, donc vous devrez itérer sur chaque caractère individuel qui, mis ensemble, constituent la chaîne de caractères.