Konvertierungen zwischen Unicode und Ascii (Ansi?) Strings
-
Hallo,
da ich in meinem aktuellen Projekt mit Unicode arbeiten möchte, verwende ich als String einheitlich basic_string<wchar_t>. Einige Funktionen erwarten als Parameter einen const char*. Die Frage: Wie kann ich nun einen solchen basic_string<wchar_t> nach const char* konvertieren? Mit basic_string<wchar_t>::c_str() geht es nicht, da ich dann ja ein wchar_t* anstatt einem char* zurückbekomme. Und in der FAQ steht auch nur, wie man char* nach wchar_t* konvertiert und nicht andersherum.
Vielen Dank für Antworten
-
Und in der FAQ steht auch nur, wie man char* nach wchar_t* konvertiert und nicht andersherum.
Das andersherum lässt sich aber doch trivial aus dem FAQ-Beitrah herleiten:
VC 6:
wstring wide(L"Hallo"); char Narrow[6]; char defChar = ' '; _USE(cout.getloc(), ctype<wchar_t> ).narrow(wide.c_str(), wide.c_str()+6, defChar, Narrow);
Andere:
wstring wide(L"Hallo"); char Narrow[6]; char defChar = ' '; use_facet<ctype<wchar_t> > (cout.getloc()).narrow(wide.c_str(), wide.c_str()+6, defChar, Narrow);
Alternativ hilft:
wcstombswstring wide(L"Hallo"); char narrow[6]; narrow[5] = '\0'; wcstombs(narrow, wide.c_str(), wide.size());