2016-07-05 19 views
1

Ich habe eine Datei mit einem nicht-englischen Namen. Der Inhalt ist auch nicht englisch.C++ Lesen von einem nicht-englischen Dateinamen und einem nicht-englischen Text

Jetzt möchte ich einen Stream für diese Datei erstellen, um Daten lesen/schreiben zu können.

Auch, wenn möglich, würde ich gerne feststellen, in welcher Sprache der Text ist.

Zum Beispiel:

Ich habe eine Datei „հայերեն txt.“ Und in der Textdatei, die wir geschrieben haben „Բարեւ“. Die Datei ist Unicode-codiert. Jetzt möchte ich sowohl den Dateinamen als auch den Text im RAM lesen.

Angenommen, ich habe einen anderen Text "Վահագն". Jetzt möchte ich eine Datei "Վահագն. Txt" erstellen und einen anderen Unicode-Text in die Datei schreiben.

Betriebssystem: Windows 7+.

C++: vc120 oder vc140.

+2

Hallo, was meinst du, nicht-Englisch? Meinst du es ist in UTF8? Normalerweise können Sie mit ifstream nur einen Stream aus der Datei erstellen, aber Sie müssen bei der Interpretation der Bytes vorsichtig sein. – user1582024

+2

[Wie öffne ich einen std :: fstream (ofstream oder ifstream) mit einem Unicode-Dateinamen?] (Http://stackoverflow.com/questions/821873/how-to-open-an-stdfstream-ofstream-or-stream-) with-a-unicode-filename) Bitte teilen Sie uns auch mit, auf welchem ​​Betriebssystem Sie arbeiten (Windows, Linux, MS-DOS) – mvidelgauz

+1

Ich denke, dass Sie einen breiten Zeichenstrom verwenden möchten. Bitte schau hier. http://StackOverflow.com/Questions/12789273/Read-Write-Unicode-c –

Antwort

2

Windows hat nativ eine sehr gute Unterstützung für Unicode, zumindest für die Basic Multilingual Plane, seit mindestens Windows 3 mit dem Unicode-Teil der API.

Sie müssen nur breite Zeichen für den Namen der Datei und für die Funktionen, die es verarbeiten, und einen breiten Zeichenstrom verwenden. Aber ohne Ihren Code zu sehen, kann ich leider nicht viel mehr sagen, außer dass Sie mit anständigen C++ - Compilern das entweder mit WinAPI-Funktionen oder mit der Standard-C++ - Bibliothek (std :: wstring und und std :: wfstream) machen können. . Aber Sie müssen wissen, welche Codierung Sie für die Dateien verwenden ...

+0

Die Verwendung von wstring und wchar_t mit fstream (nicht wfstream) funktionierte gut für mich – mbaros