Come si può convertire una stringa in maiuscolo. Gli esempi che ho trovato su Google hanno a che fare solo con i caratteri.
struct convert {
void operator()(char& c) { c = toupper((unsigned char)c); }
};
// ...
string uc_str;
for_each(uc_str.begin(), uc_str.end(), convert());
Nota: Un paio di problemi con la soluzione superiore:
21.5 Utilità di sequenza a terminazione nulla
Il contenuto di queste intestazioni deve essere lo stesso delle intestazioni della Libreria C Standard <ctype.h>, <wctype.h>, <string.h>, <wchar.h>, e <stdlib.h> [...]
Il che significa che i membri di cctype
potrebbero essere macro non adatte al consumo diretto negli algoritmi standard.
Un altro problema con lo stesso esempio è che non esegue il cast dell'argomento o verifica che questo sia non negativo; questo è particolarmente pericoloso per i sistemi in cui il semplice char
è firmato. (La ragione è: se questo è implementato come una macro probabilmente userà una tabella di ricerca e il vostro argomento si indicizza in quella tabella. Un indice negativo vi darà UB).
provate la funzione toupper()
(#include <ctype.h>
). accetta caratteri come argomenti, le stringhe sono composte da caratteri, quindi dovrete iterare su ogni singolo carattere che, messo insieme, comprende la stringa