Bevor Sie sogar die Aufgabe der Erstellung von Textdateien, die nicht-lateinische Buchstaben beginnen können, müssen Sie bestimmen, welche Codierung für Ihren Ort verwendet werden.
Wenn Ihr Gebietsschema beispielsweise die Codierung UTF-8
verwendet, muss die Zeichenfolge "русский" vollständig anders codiert werden, als wenn Ihr Gebietsschema KOI8-R
lautet.
Die Zeichenfolge "русский" in UTF-8
wird durch die Oktetts (Bytes) dargestellt: d1 80 d1 83 d1 81 d1 81 d0 ba d0 b8 d0 b9
. Für ein Gebietsschema KOI8-R
sind die entsprechenden Oktetts d2 d5 d3 d3 cb c9 ca
.
Internationalisierung ist schwer.
In den meisten Fällen werden Sie möglicherweise in der Lage der C++ Bibliothek Breitzeichen mit Unicode-Streams zu verwenden:
#include <iostream>
#include <locale>
int main()
{
std::locale::global(std::locale(""));
std::wcout << L"\u0440\u0443\u0441\u0441\u043a\u0438\u0439" << std::endl;
return 0;
}
Hoffentlich wird die Ausgabe von dieser seinen „русский“, auf Ihrer Plattform. Vorausgesetzt, dies funktioniert, könnte dies der Pfad des geringsten Widerstands sein, aber Sie müssen die Unicode-Werte für jedes Zeichen nachschlagen.
Es gibt auch Unterstützung für UTF-8
im neuen C++ - Standard, aber die Antwort hier ist für Sie, um etwas Zeit zu verbringen, sich auf die allgemeinen Konzepte von Gebietsschema, Unicode und Internationalisierung zu erziehen. Es wird schwierig sein, dies richtig zu tun, ohne ein vollständiges Verständnis davon zu haben, wie all diese Dinge funktionieren.
Wie haben Sie die Datei geschrieben? Wenn Sie 'wchar_t *' oder 'std :: wstring' verwenden, sollten Sie' std :: wofstream' verwenden. – NathanOliver
habe ich versucht aber keine der Kombinationen hilft. Also schlagen Sie vor, es als Wstring zu behalten und wostream zu verwenden? Wenn ja, dann schreibt es nichts in die Datei – mbaros
Wie ist Ihre Quelldatei kodiert? utf8, Latein-1, ...? – Jarod42