Frage

Beispiel:

#include <iostream>

using namespace std;

int main()
{
    wchar_t en[] = L"Hello";
    wchar_t ru[] = L"Привет"; //Russian language
    cout << ru
         << endl
         << en;
    return 0;
}

Dieser Code druckt nur HEX-Werte wie Adresse. Wie die Wchar_t Zeichenfolge drucken?

War es hilfreich?

Lösung

Edit: Das funktioniert nicht, wenn Sie zu schreiben Text versuchen, die nicht in Ihrem Standardgebietsschema dargestellt werden können. : - (

Verwenden std::wcout statt std::cout.

wcout << ru << endl << en;

Andere Tipps

Kann ich vorschlagen std::wcout?

So etwas wie folgt aus:

std::cout << "ASCII and ANSI" << std::endl;
std::wcout << L"INSERT MULTIBYTE WCHAR* HERE" << std::endl;

Sie können mehr Informationen in einer verwandten Frage finden href="https://stackoverflow.com/questions/276010/stdwcout-to-console-window-in-xcode">.

könnten Sie verwenden einen normalen char-Array verwenden, die tatsächlich mit utf-8-Zeichen gefüllt ist. Diese erlauben sollen Zeichen über Sprachen zu mischen.

#include <iostream>
using namespace std;
void main()
{
setlocale(LC_ALL, "Russian");
cout << "\tДОБРО ПОЖАЛОВАТЬ В КИНО!\n";
}

hat Windows die sehr verwirrend Informationen. Sie sollten C / C ++ Konzept von Unix / Linux lernen, bevor sie in der Windows-Programmierung.

Wchar_t speichert Zeichen in UTF-16, die eine feste 16-Bit-Speichergröße genannt Wide-Zeichen aber wprintf () oder wcout () niemals Nicht-Englisch breiten Zeichen richtig gedruckt, da keine Konsole Ausgabe in UTF-16. Windows wird Ausgabe in der aktuellen locale während Unix / Linux ausgeben wird in UTF-8, sind alle Multi-Byte. So müssen Sie Multi-Byte-Wide-Zeichen konvertieren vor dem Druck. Der Unix-Befehl wcstombs () funktioniert nicht auf Windows verwenden WideCharToMultiByte () statt.

Als erstes müssen Sie konvertieren Datei in UTF-8 mit dem Editor oder einem anderen Editor. Dann installieren Schrift in Eingabeaufforderung Konsole, so dass es lesen / schreiben in Ihrer Sprache und ändern Codepage in der Konsole auf UTF-8 korrekt in der Eingabeaufforderung „chcp 65001“ von der Eingabe angezeigt werden, während Cygwin bereits auf UTF-8 Standard ist. Hier ist, was ich in Thai hat.

#include <windows.h>
#include <stdio.h>

int main()
{
    wchar_t* in=L"ทดสอบ"; // thai language
    char* out=(char *)malloc(15);
    WideCharToMultiByte(874, 0, in, 15, out, 15, NULL, NULL);
    printf(out); // result is correctly in Thai although not neat
}

Beachten Sie, dass 874 = (Thai) Codepage im Betriebssystem, 15 = Größe der Zeichenfolge

Mein Vorschlag ist, den Druck nicht-Englisch breites Zeichens Konsole wenn es nicht notwendig zu vermeiden, weil es nicht einfach ist.

Sie können mit breiten Zeichen drucken wprintf .

#include <iostream>

int main()
{
    wchar_t en[] = L"Hello";
    wchar_t ru[] = L"Привет"; //Russian language
    wprintf(en);
    wprintf(ru);
    return 0;
}

Ausgabe:

  

Hallo
  Привет

Wir suchen nicht nach einfachen Möglichkeiten!

int i = 0;
while (ru[i]) {
   std::cout << (char)ru[i];
   i++;
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top