Perchécout << "привет"; o wcout << L "привет";
cout<< "привет";
funziona bene, mentre
wcout<< L"привет";
non lo fa? (in Qt Creator per linux)
Perchécout << "привет"; o wcout << L "привет";
cout<< "привет";
funziona bene, mentre
wcout<< L"привет";
non lo fa? (in Qt Creator per linux)
GCC e Clang consente di considerare il file sorgente come UTF-8. Il tuo terminale Linux è probabilmente configurato anche su UTF-8. Quindi con cout<< "привет"
c'è una stringa UTF-8 che viene stampata su un terminale UTF-8, tutto va bene.
wcout<< L"привет"
dipende dalla corretta configurazione di Locale per convertire i caratteri di larghezza nella codifica dei caratteri del terminale. Le impostazioni internazionali devono essere inizializzate affinché la conversione funzioni (lo default "classic" aka "C" locale non sa come convertire i caratteri ampi). Utilizzare std::locale::global (std::locale (""))
affinché le impostazioni internazionali corrispondano alla configurazione dell'ambiente o std::locale::global (std::locale ("en_US.UTF-8"))
per utilizzare un locale specifico (similar to this C example).
Ecco il sorgente completo del programma di lavoro:
#include <iostream>
#include <locale>
using namespace std;
int main() {
std::locale::global (std::locale ("en_US.UTF-8"));
wcout << L"привет\n";
}
Con g++ test.cc && ./a.out
questa stampe "привет" (su Debian Jessie).
Vedere anche this answer sui pericoli dell'utilizzo di caratteri ampi con output standard.
Il motivo è la conformità con gli standard C, C++ e POSIX. – AProgrammer
grazie. tuttavia è sorprendente che "привет" non sia std letterale dovrebbe essere 'char []'. – user2029077
@MinimusHeximus: "привет" è char [] in UTF-8 per impostazione predefinita, L "привет", tuttavia, è wchar [] in UTF-16, UTF-32 o UCS-2. – ArtemGr
Presumibilmente, perché qualunque cosa riceve questi caratteri come output "non capisce caratteri ampi". Se descrivi "Non funziona" un po 'di più, potrebbe essere d'aiuto. –
stampa ???? invece nella finestra del terminale. Tuttavia, come "привет" può essere unicode? – user2029077
и тебе "привет" – vladkras