Unicode Version für fstream? (wfstream?)
-
Hallo Forum,
ich stelle gerade meinen Source auf Unicode um. Ich möchte eine Datei öffnen:
wfstream oFile; oFile.open(m_wStr.c_str(), ios::out + ios::binary + ios::trunc); if (oFile) { ...Jetzt bekomme ich bei der Zeile wo die Datei geöffnet wird diesen Fehler:
'void __thiscall std::basic_fstream<unsigned short,struct std::char_traits<unsigned short> >::open(const char *,int)' : cannot convert parameter 1 from 'const unsigned short *' to 'const char *'Warum erwartet er als ersten Parameter noch immer einen char* und keinen wchar_t? Ich benutze doch die wfstream? In meinem Buch steht das sei die Unicode Version. (Ich könnte die fstream verwenden, weil ich binär öffne, dann müsste ich aber den Pfad in std::string oder char* angeben)
-
This is by design. There is no way in standard C nor standard C++ to
refer to a file with Unicode name.
...
Their rationale was as Igor said: Some (most) file systems cannot handle
unicode filenames.http://groups.google.de/group/microsoft.public.vc.stl/browse_thread/thread/66b84edc6e393146/5f454acb5f7b1bf6?q=c%2B%2B+wfstream&lnk=ol&hl=de&
Hätte man trotzdem anbieten können. Der Programmierer hätte dann schon gewußt das sein OS kein Unicode im Pfad unterstützt.Manchmal frage ich mich ob dieses C++ auch wirklich eingesetzt wird.

-
Kommt anscheinend darauf an, welche Std-Lib-Implementierung du hast.
Aber der Datenstrom dürfte bei dir trotzdem breit sein. Also die Ein-/Ausgabe-Operatoren sind bestimmt breit! Nur halt der Dateiname anscheinend nicht, der ist ASCII.In der VC++2005 ist z.B. beides verfügbar:
http://msdn2.microsoft.com/en-us/library/4dx08bh4(VS.80).aspx
-
WinApi Neuling schrieb:
Manchmal frage ich mich ob dieses C++ auch wirklich eingesetzt wird.

Die meisten setzen bisher sicherlich native File-Funktionen ein, wenn sie Unicode-Filenames haben wollen.
-
Gibt es vielleicht ein anderes C++ Objekt mit dem ich Dateien schreiben kann? (Mit Unicode Pfadangabe)
Mit GetTempPathW() bekomme ich den Unicode Pfad. Den Krampf mit der wchar_t -> char Umwandlung wollte ich mir nicht antun.
-
Wenn du sowieso schon die WinAPI (lt. Name) verwendest kannst du ja mit CreateFile() und WriteFile() arbeiten.
MfG SideWinder
-
Stichwort: UTF8
-
Ich habe es mit der WinApi gemacht.
Vielen Dank Euch allen
