Ciao a tutti,
Ho bisogno di inserire in una stringa in c++ dei caratteri accentati.
Quando stampo a video, per esenpio facendo cout, il carattere che si presenta a video non e' la mia lettera accentata ma un simbolo strano...
come posso fare?
CIAO
Ciao a tutti,
Ho bisogno di inserire in una stringa in c++ dei caratteri accentati.
Quando stampo a video, per esenpio facendo cout, il carattere che si presenta a video non e' la mia lettera accentata ma un simbolo strano...
come posso fare?
CIAO
È tutta una questione di set di caratteri. Ed è una cosa un po' "delicata", a cui prestare un minimo di attenzione.Originariamente inviato da magoronzo
Ho bisogno di inserire in una stringa in c++ dei caratteri accentati.
Quando stampo a video, per esenpio facendo cout, il carattere che si presenta a video non e' la mia lettera accentata ma un simbolo strano...
come posso fare?
Immagino che tu stia stampando con cout sulla "console" di Windows. Bene, almeno qui in Italia la console è tipicamente settata per usare il code-page 850. Vuoi stampare dei caratteri accentati?? Sapendo che viene usato il CP-850 (vedi <qui>), devi scrivere nel sorgente il codice del carattere. Esempio: per la 'è' devi mettere nella stringa \212 oppure \x8a.
Dipende dal fatto che in Windows il code page usato per le finestre della console non è Unicode né un code page Ansi, bensì un code page OEM; per poter stampare correttamente le lettere accentate devi usare la funzione CharToOemBuff come nell'esempio seguente:
.codice:char test[]="èÈà"; CharToOemBuffA(test,test,sizeof(test)); //Effettua una conversione in-place della stringa al codepage OEM. std::cout<<test; //Visualizza correttamente èÈà
Amaro C++, il gusto pieno dell'undefined behavior.