FileStreams, wurde hier nicht nachgedacht?



  • Das Problem liegt nicht an der Instanzierung sondern der Tatsache, dass als Parameter const char* hardcodiert ist.



  • ness
    Die Instanzierung ist doch furz wie deckel wenn man sich den 2. Defaulttemplateparameter anguckt. User-- spricht das Thema richtig an:

    std::basic_ofstream<wchar_t,std::char_traits<wchar_t> > foobar2 (L"test.txt");
    
    // bewirkt das selbe wie
    
    std::basic_ofstream<wchar_t> foobar2 (L"test.txt");
    
    // -------------
    
    main.cpp(28): error C2664: 'std::basic_ofstream<_Elem,_Traits>::basic_ofstream(const char *,std::_Iosb<_Dummy>::openmode)' : cannot convert parameter 1 from 'unsigned short [9]' to 'const char *'
            with
            [
                _Elem=wchar_t,
                _Traits=std::char_traits<wchar_t>,
                _Dummy=int
            ]
            Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast
    

    Ich weiß auch das die STL für unicode (leider) nie vorgesehen war, deshalb hab ich mir auch einen Teil selbst gecodet dafür, jedoch find ich das schon ärgerlich, das ich für unicode nicht die FileStreams richtig benutzen kann sondern auf API Funktionen von Linux und Windows zurückgreifen muss.



  • Benutzt du den gcc? Da hatt ich auch letztens Probleme. Mit VC funktionierts allerdings.



  • Michael E. schrieb:

    Benutzt du den gcc? Da hatt ich auch letztens Probleme. Mit VC funktionierts allerdings.

    Auf der Arbeit benutz ich VC++7.0 und den GCC, zuhause den aktuellen DevC++ und VC++7.0 und auf keinem läuft dies 😞



  • noch nicht mit unicode und streams gearbeitet (deswegen rate ich 😃 ), aber beim durchsehen der header habe ich festgestellt das um das wchar_t zu aktivieren du GLIBCXX_USE_WCHAR_T definiert haben musst.



  • miller_m schrieb:

    noch nicht mit unicode und streams gearbeitet (deswegen rate ich 😃 ), aber beim durchsehen der header habe ich festgestellt das um das wchar_t zu aktivieren du GLIBCXX_USE_WCHAR_T definiert haben musst.

    Welcher Compiler? Bei VC++7 geht da nix und beim DevCp das selbe ergebnis.



  • gcc 4.0.1

    [edit]
    bei 3.3 ist es _GLIBCPP_USE_WCHAR_T



  • nur fällt man damit übelst auf die schnauze, weil der gcc bisher noch keine spezialisierungen auf wchar_t mitliefert. dieses makro ist also ein in die zukunft weisendes.



  • otze schrieb:

    nur fällt man damit übelst auf die schnauze, weil der gcc bisher noch keine spezialisierungen auf wchar_t mitliefert. dieses makro ist also ein in die zukunft weisendes.

    das char trait ist aber schon spezialsiert, oder meinst du etwas anderes?



  • miller_m schrieb:

    otze schrieb:

    nur fällt man damit übelst auf die schnauze, weil der gcc bisher noch keine spezialisierungen auf wchar_t mitliefert. dieses makro ist also ein in die zukunft weisendes.

    das char trait ist aber schon spezialsiert, oder meinst du etwas anderes?

    ein Beispiel: locales(und btw: bei mir hat die lib des gcc nichtmal char_traits<wchar_t> spezialisiert...). nächstes beispiel: buffer für wcout/wcin.



  • sieht doch so aus als ob nicht nachgedacht wurde bzw. nicht "international" gedacht. Schade, richtig schade


Anmelden zum Antworten