Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C++]Caratteri accentati...

    Ciao a tutti sono nuovamente io...
    Volevo chiedervi come è possibile visualizzare i caratteri accentati in un programma in c++ dato che quando le scrivo vengono fuori dei caratteri strani...
    grazie a tutti.
    Datemi un terminale e vi installerò il mondo

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Normale. (Inizia a diventare una FAQ questa cosa).
    La console usa un set di caratteri OEM, quindi tutti i caratteri oltre il 127 sono sballati.
    Ti rimando alla documentazione delle funzioni per approfondimenti.

    codice:
    inline std::string translate_chars(const std::string& s) {
    	int sz = ::MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED | MB_ERR_INVALID_CHARS,s.c_str(),s.size(),0,0);
    	std::wstring ws(sz,'');
    	::MultiByteToWideChar(CP_ACP,MB_PRECOMPOSED | MB_ERR_INVALID_CHARS,s.c_str(),s.size(),&ws[0],ws.size());
    
    	int sz = ::WideCharToMultiByte(CP_OEMCP,0,ws.c_str(),ws.size(),0,0,0,0);
    	std::string os(sz,'');
    	::WideCharToMultiByte(CP_OEMCP,0,ws.c_str(),ws.size(),&os[0],os.size(),0,0);
    	return os;
    }
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  3. #3
    ... per quanto io creda che con un po' di magia C++ probabilmente si potrebbe costringere cin e cout ad effettuare le trasformazioni OEM->ANSI e viceversa; credo che la questione coinvolga codecvt, locale e facet, ma devo documentarmi.
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Basterebbe disporre della tabella di lookup dell'OEM relativo alla lingua. Essendo una conversione 1:1 non dovrebbe essere difficile scrivere un codecvt per la trasliterazione.
    This code and information is provided "as is" without warranty of any kind, either expressed
    or implied, including but not limited to the implied warranties of merchantability and/or
    fitness for a particular purpose.

  5. #5
    Basterebbe appunto usare MultiByteToWideChar/WideCharToMultiByte (per quanto sarebbe una soluzione piuttosto inefficiente); come detto, però, sui locales so poco-niente, per cui dovrei prima documentarmi su come funzionano.
    Amaro C++, il gusto pieno dell'undefined behavior.

  6. #6
    cioe'
    perche'

    (con apici)

    e passa la paura

  7. #7
    Vent'anni di Unicode e ancora dobbiamo usare gli apici per gli accenti...
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.