View Full Version : [C++] Convertire stringa da maiuscolo a minusco ....
Ho una stringa di n caratteri maiuscoli e mi serve poterla convertire in minuscolo.. esiste qualche procedura già pronta in c++ ho devo scrivermi io un algoritmo facendo riferimento al codice ascii ?
Non so se esiste gia una funzione fatta ma dato che il problema è cosi banale ecco a lei:
char * uppercase(char * str)
{
for(int i=0;str[i]!='\0';i++)
if(str[i]>='a'&&str[i]<='z')str[i]-=32;
return str;
}
Ziosilvio
02-05-2005, 13:30
char * uppercase(char * str)
{
for(int i=0;str[i]!='\0';i++)
if(str[i]>='a'&&str[i]<='z')str[i]-=32;
return str;
}
A parte il fatto che questo codice converte minuscole in maiuscole, e non il contrario...
... e poi, funziona se la codifica per il testo è ASCII, ma non se è EBCDIC.
E non c'è scritto da nessuna parte che la codifica per il testo debba essere ASCII e non possa essere EBCDIC.
Io userei isupper() e tolower() (definite nell'header ctype.h).
Dimenticavo: la funzione scritta così fallisce se il suo argomento è una costante stringa.
A parte il fatto che questo codice converte minuscole in maiuscole, e non il contrario...
... e poi, funziona se la codifica per il testo è ASCII, ma non se è EBCDIC.
E non c'è scritto da nessuna parte che la codifica per il testo debba essere ASCII e non possa essere EBCDIC.
Io userei isupper() e tolower() (definite nell'header ctype.h).
Dimenticavo: la funzione scritta così fallisce se il suo argomento è una costante stringa.
queste due funzioni prendono in ingresso semplicemente la stringa ????
Scusate ho letto male ma è sufficente cambiare cosi
char * lowercase(char * str)
{
for(int i=0;str[i]!='\0';i++)
if(str[i]>='A'&&str[i]<='Z')str[i]+=32;
return str;
}
Si questo codice va bene per una codifica ascii e non per altre codifiche ma comunque quando crei un programma sai la codifica che usi (almeno lo spero).
Riguardo alla costante stringa cosa intende...
Ciao.
Ziosilvio
02-05-2005, 15:00
queste due funzioni prendono in ingresso semplicemente la stringa ????
No, un singolo carattere.
Leggi la man page di Linux, l'help in linea dell'IDE, o l'appendice B del K&R.
Ziosilvio
02-05-2005, 15:03
Riguardo alla costante stringa cosa intende...
Che se fai una cosa del tipo:
printf("%s\n",lowercase("HELLO WORLD"));
l'output sara' HELLO WORLD e non hello world.
EDIT: ammesso che l'output ci sia... io ho fatto una prova, e mi ha dato un Segmentation fault.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.