Aus std::string einen std::wstring machen
-
Hallo Forum,
ich muss einer C++ Visual Studio 6 DLL ein wstring übergeben. Leider arbeitet mein Programm nur mit string. Wie kann ich dazwischen konvertieren? In der FAQ habe ich schon den char -> char_t Artikel gefunden. Dort steht:
// andere char Narrow[6] = "Hallo"; wchar_t Widen[6]; use_facet<ctype<wchar_t>> (cout.getloc()).widen(Narrow, Narrow+6, Widen);Das ist zum einen umständlich, zum anderen habe ich eine Menge Fehlermeldungen wenn ich den Source so einfüge:
error C2780: 'const _F &__cdecl std::use_facet(const class std::locale &,const _F *,bool)' : expects 3 arguments - 1 provided
c:\program files\microsoft visual studio\vc98\include\xlocale(157) : see declaration of 'use_facet'
error C2228: left of '.widen' must have class/struct/union type
error C2563: mismatch in formal parameter list
error C2568: '=' : unable to resolve function overload
could be 'class std::basic_istream<unsigned short,struct std::char_traits<unsigned short> > &__cdecl std::ws(class std::basic_istream<unsigned short,struct std::char_traits<unsigned short> > &)'
c:\program files\microsoft visual studio\vc98\include\istream(560) : see declaration of 'ws'
or 'class std::basic_istream<char,struct std::char_traits<char> > &__cdecl std::ws(class std::basic_istream<char,struct std::char_traits<char> > &)'
c:\program files\microsoft visual studio\vc98\include\istream(540) : see declaration of 'ws'
or 'class std::basic_istream<_E,_Tr> &__cdecl std::ws(class std::basic_istream<_E,_Tr> &)'
c:\program files\microsoft visual studio\vc98\include\istream(520) : see declaration of 'ws'
Error executing cl.exe.Solche Probleme sind bestimmt schon öfters aufgetaucht. Gibt es da nichts einfacheres? Notfalls muß ich mir halt mbstowcs() von der WinApi ansehen.
-
Hat sich erledigt. Hab die WinApi genommen.
-
Jakata schrieb:
Hat sich erledigt. Hab die WinApi genommen.
Naja und alternativ halt:
std::string str("test"); std::wstring wstr(str.begin(), str.end());gruss
v R
-
@virtuell Realisticer
keine sehr schöne lösung, sie geht zwar, ist jedoch unflexibel und auch nicht grade sehr sicher.
-
Kenner der Scene schrieb:
@virtuell Realisticer
keine sehr schöne lösung, sie geht zwar, ist jedoch unflexibel und auch nicht grade sehr sicher.bitte mal erklären
-
Nichtkenner schrieb:
Kenner der Scene schrieb:
@virtuell Realisticer
keine sehr schöne lösung, sie geht zwar, ist jedoch unflexibel und auch nicht grade sehr sicher.bitte mal erklären
Er hat schon recht, wenn z. B. ein anderer Zeichensatz zu grunde liegt, welcher
nicht mit dem Wertebereich von 0 - 127 auskommt, wie ASCII, wird man damit wenig
erfolg haben.Alternativ:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39492.html
Hab ich auch gerade erst gesehn.
gruss
v R