std::wstring vs std::string: Wann Unicode und wann ASCII in C++ verwenden?
Hallo zusammen! Ich bin ein Anfänger in C++ und bin ständig verwirrt über den Unterschied zwischen std::wstring und std::string. Ich habe gelesen, dass std::string für "normale" Strings ist und std::wstring für Unicode. Aber in der Praxis habe ich viele Probleme.
Hier ein Beispiel: Ich schreibe ein Programm, das Dateinamen aus einem Ordner liest. Einige Dateien enthalten Kyrillisch, z.B. "отчет.docx". Ich verwende std::string:
```cpp
std::string filename = "отчет.docx";
std::ifstream file(filename);
```
Und die Datei wird nicht geöffnet! Wenn ich jedoch std::wstring und wifstream verwende, funktioniert alles:
```cpp
std::wstring filename = L"отчет.docx";
std::wifstream file(filename);
```
Aber dann treten neue Probleme auf: Ich kann wstring nicht an Funktionen übergeben, die std::string erwarten (z.B. in alten Bibliotheken), und bei der Ausgabe in der Konsole treten Probleme auf.