wstring in char* konvertieren
-
Hallo ,
weiß vielleicht jemand wie man std::wstring in char* konvertieren kann ?
Danke.
Mfg Elke
-
Mit Bordmitteln würden mir nur Locales (genauer: die Facette codecvt<>) einfallen - aber ich hab' keine Ahnung, ob die wirklich passt.
Jenseits des Standards kenne ich noch die MFC-Stringumwandlungs-Makros (W2A() und Konsorten).
-
Falls es immernoch um Xerces-C++ geht:
#include <xercesc/util/XMLString.hpp> /* ... */ char *c_string = XMLString::transcode( wide_string.c_str() ); /* mach was mit c_string */ XMLString::release(c_string);
-
Könnte man nicht narrow nehmen?
Etwa so?wstring wtext = L"Das ist ein Text"; size_t size = wtext.size(); char *Narrow = new char[size+1]; locale loc; char def = ' '; use_facet<ctype<wchar_t> > (loc).narrow(wtext.c_str(), wtext.c_str()+size, def, Narrow); Narrow[size] = '\0';
-
Hallo LordJaxom ,
nein , es handelt sichj nicht mehr um den XML-String . Ich habe schon geparst und bin jetzt weiter .
Aber ich kann ja versuchen den wstring in wchar_t* und dann wchar* in char*
konvertieren.Kannst du mir da vielleicht helfen ?
Danke.
Mfg Elke
-
Hallo Braunstein,
diese Methode ist bestimmt eine MFC-Methode .? Oder ?
use_facet<ctype<wchar_t> > (loc).narrow(wtext.c_str(), wtext.c_str()+size, def, Narrow);DAs Problem ist, unsere Anwendungen laufen bei uns auf 2 Plattformen(Windoes und Unix ).

Danke.
Mfg , Elke
-
Hallo
nein das läuft auf meinen Borland Builder in reiner C++Standard-Konsole auch.
bis bald
akari
-
Um akaris Aussage nochmals zu untermauern. Das das reines Standard-C++.
Allerdings funktioniert das bei mir auch nur mit meinem BCB6 aber nicht mit MinGW32 (abnormal program termination).
-
So , jetzt kann ich denn wstring in wchar_t* konvertieren.
wchar_t* oMitteilung ; std::wstring wMittelung = L"D"; oMitteilung = wMittelung .data();Jetzt muss ich nuc´r noch den wchar_t* in char* konvertieren .
Wäre toll , wenn mir jemand helfen könnte .Mfg , Elke
-
Hallo
aber genau das hat doch Braunstein gepostet... zwar von wstring auf char*, aber das prinzip ist das selbe.
bis bald
akari
-
Hallo Akari,
du hast recht , aber ich wollte es nur einfacher haben.
Jetzt konnte ich auch den wchar* in char* konvertieren :
std::wstring x = L"D"; wchar_t* woMitteilung; woMitteilung = ( wchar_t* )x.data(); // gibt den wchar_t swcstombs( oMitteilung , ( const wchar_t* )woMitteilung , 2 );2 ist die Länge -habe hart reingestellt zum Testen.
Vielen Dank für eure Unterstützung.
Mfg ,
Elke