Operator<< kann nicht gefunden werden für wstring bei lexical_cast



  • Ich bekomme bei folgendem Code einen (für mich unverständlichen Fehler)

    boost::lexical_cast< std::basic_string< wchar_t > >( 12345 );
    
    /* Fehler:
    Boost1-33\include\boost-1_33\boost\lexical_cast.hpp(156): error C2679: Binärer Operator '>>': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operator vom Typ 'std::basic_string<_Elem,_Traits,_Ax>' akzeptiert (oder keine geeignete Konvertierung möglich)
            with
            [
                _Elem=wchar_t,
                _Traits=std::char_traits<wchar_t>,
                _Ax=std::allocator<wchar_t>
            ]
    */
    

    Laut boost doku sollte das doch einwandfrei funktionieren.



  • lexical_cast arbeitet afaik mit einem stringstream (=basic_stringstream<char>) als Zwischenspeicher - deshalb kannst du es mit allen Datentypen anwenden, die in normale (char)Streams geschrieben werden können. Und die IO-Operatoren für basic_string's existieren nur bei übereinstimmenden Zeichentypen (string+iostream, wstring und wiostream etc), also mußt du den Operator notfalls selber schreiben.


  • Mod

    thomas r. schrieb:

    Ich bekomme bei folgendem Code einen (für mich unverständlichen Fehler)

    boost::lexical_cast< std::basic_string< wchar_t > >( 12345 );
    
    /* Fehler:
    Boost1-33\include\boost-1_33\boost\lexical_cast.hpp(156): error C2679: Binärer Operator '>>': Es konnte kein Operator gefunden werden, der einen rechtsseitigen Operator vom Typ 'std::basic_string<_Elem,_Traits,_Ax>' akzeptiert (oder keine geeignete Konvertierung möglich)
            with
            [
                _Elem=wchar_t,
                _Traits=std::char_traits<wchar_t>,
                _Ax=std::allocator<wchar_t>
            ]
    */
    

    Laut boost doku sollte das doch einwandfrei funktionieren.

    bei mir funktioniert das ohne fehler mit vc++8.0 - welchen compiler verwendest du?

    @CStoll: vermutungen bringen uns nicht weiter. die dokumentation ist hier im übrigen eindeutig.


Anmelden zum Antworten