Ich versuche Zeilen aus TXT-Dateien zu lesen, die als Unicode gespeichert wurden. Das ist, wie ich es so mache:Wie kyrillische Unicode-Datei in C++ lesen?
wifstream input;
string path = "test.txt";
input.imbue(locale(input.getloc(),
new codecvt_utf16<wchar_t, 0x10ffff, consume_header>));
input.open(path);
if (input.is_open())
{
wstring line;
input.seekg(1 , ios_base::beg);
getline(input, line);
}
Es funktioniert für Dateien mit lateinischen Zeichen in Ordnung. Aber für kyrillische Dateien bekomme ich seltsame Symbole statt Leerzeichen und benachbarte Zeichen.
Zum Beispiel:
Was in der Eingabedatei ist:
Госдеп США осудил нападение на
Was ich:
︓осдепР ШАР> судилР = ападениеР = а
Was mache ich falsch?
sicher ist es kein Ausgabeproblem? Nur weil du Unicode liest, bedeutet das nicht, dass du in eine Unicode-Umgebung ausgibst. –
Ich würde diese Zeile entfernen: input.imbue (locale (input.getloc(), neue codecvt_utf16)); –
duDE
Re "Was mache ich falsch?", Ich fühle mich sehr wie glatt und antworten "Verwenden der C++ - Standard-Bibliothek", weil es dies standardmäßig tun sollte. Es sollte nicht notwendig sein, herauszufinden, wie man es dafür benutzt. Oder umgehen Sie es. –