Umwandeln Xerces -Variablentyp in std::wstring
-
Hallo,
weiß nicht , ob diese Frage hier reingehört . Sie ist irgendwie Themen übergreifend
Aus dem Xerces bekomme ich die Message als XMLch und dies möchte ich als wstring umwandeln.
Weiß da jemand Bescheid ?
Viele Grüße ,
Elke
-
Dann schau mal nach, was für Konvertierungsmethoden die Klasse XMLch dir so bietet - eventuell ist ja etwas dabei, das einen (w)string, char* oder wchar_t* zurückgibt. (letztere können problemlos in string bzw. wstring umgewandelt werden)
-
Bei meinen letzten Experimenten damit hat sich ergeben dass XMLCh und wchar_t äquivalent sind, und die transcode-Funktionen von Xerces bieten auch nur Konvertierungen char<->XMLCh, nicht wchar_t<->XMLCh... Seinerzeit ist bei mir folgende Klasse herausgekommen, die ich als Adapter zwischen wstring, char* und XMLCh* genommen habe:
#include <string> #include <iostream> #include <xercesc/util/XMLChar.hpp> namespace xml { class string: public std::basic_string<XMLCh> { typedef std::basic_string<XMLCh> base_type; public: string(const char* data); // constructs an xml string from a transcoded C-string template<typename Ty> string(const Ty& data): base_type( data ) {} // constructs an xml string from any data base_type can handle template<typename InIt> string(InIt first, InIt last): base_type( first, last ) {} // constructs an xml string from any range base_type can handle friend std::ostream& operator<<(std::ostream& os, const string& arg); // transcodes the stored data to C-string and streams it to os }; string::string(const char* data) { XMLCh* transcoded = XMLString::transcode(data); *this = transcoded; XMLString::release(&transcoded); } ostream& operator<<(ostream& os, const string& arg) { char* transcoded = XMLString::transcode(arg.c_str()); os << transcoded; XMLString::release(&transcoded); return os; } }
-
Hallo CStoll,
ich habe genau wie LordJaxom feststellen müssen , dass es keine Konvertierung in wstring gibt.
Hallo LordJaxom ,
habe deinen Code angeschaut und leider nicht gefunden , wo du XMLCh in wstring konvertierst.
XMLCh einfach casten in wstring geht nicht . Habe schon versucht.

Viele Grüße,
Elke
-
Das widerum funktioniert bei mir (jedenfalls compiliert es durch):
XMLCh* text_von_xerces = L"Hallo, Welt"; std::wstring text_von_std = text_von_xerces;
-
Hallo LordJaxom,
nein , bei mir gibt er einen Fehler .
( Aknn nicht konvertieren... )
-
Hallo LordJaxom ,
ich benutze nicht direkt std::wstring sondern eine Ableitung von wstring.
Jetzt habe ich XMLCh* dem std::wstring zugewiesen und dann auf meinen
Variablentyp gecastet. Scheint zu gehehn. d.h. der Compiler gibt keinen Fehler.Muss die Anwendung aber noch laufen lassen. Ich melde mich auf jeden Fall nochmals, wenn ich es laufen lasse. Wird aber wahrscheinlich erst morgen sein.
Ich stelle gerade ein Framework auf Unicode um und es müssen noch Anpassungen an ein paar Stellen gemacht werden.Danke euch allen für die Hilfe !
Liebe Grüße ,
Elke