Come uscita più caratteri byte normalmente in applicazioni C / C ++ console?
-
27-09-2019 - |
Domanda
printf("%s\n", multibytestring);
Per impostazione predefinita i caratteri multi-byte apparirà come ???
nella console, come posso risolvere il problema?
Soluzione
Sto cercando di indovinare di Windows, e che si intende caratteri multi-byte e non caratteri di larghezza.
Assicurarsi che _MBCS
è definito. Prova a chiamare setlocale
e poi _setmbcp
:
setlocale(LC_ALL, "japanese");
_setmbcp(_MB_CP_LOCALE);
Dopo che si spera che funzionino bene.
Altri suggerimenti
Si vuole "% ls" per le stringhe di caratteri estesi. E 'questo quello che stai dopo?
Ecco una risposta più completa:
- È possibile utilizzare wprintf di uscita stringhe di 16 bit per default con "% s"
- È possibile utilizzare "% ls" o "% hs" per specificare esplicitamente la larghezza car / stringa per i singoli argomenti, indipendentemente printf variante
- See: http://msdn.microsoft.com/en-us/ biblioteca / 56e442dc.aspx per documenti di riferimento MS
Se stai chiedendo circa i caratteri UTF8 che non appare a destra, è probabilmente la piattaforma-specifici (in base alla tabella codici / movimentazione per la console). Si dovrebbe essere in grado di UTF8 uscita come ASCII, ma il display dovrà essere in grado di gestire correttamente UTF8, e potrebbe essere necessario impostare la tabella codici appropriata o l'impostazione altro ambiente (non troppo sicuro di questo, penso che sia app / piattaforma specifica ).
Prova questo:
wprintf("%s\n", multibytestring);