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.
-
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.