string in wstring konvertieren?
-
Gibt es eine Möglichkeit einfach einen char string in einen wide char string zu konvertieren? Stehe leider das erste mal vor diesem Problem.
-
So, nach einer Suche im Internet hab ich folgendes gefunden:
#include <string> #include <vector> #include <locale> #include <functional> #include <iostream> // Put this class in your personal toolbox... template<class E, class T = std::char_traits<E>, class A = std::allocator<E> > class Widen : public std::unary_function< const std::string&, std::basic_string<E, T, A> > { std::locale loc_; const std::ctype<E>* pCType_; // No copy-constructor, no assignment operator... Widen(const Widen&); Widen& operator= (const Widen&); public: // Constructor... Widen(const std::locale& loc = std::locale()) : loc_(loc) { #if defined(_MSC_VER) && (_MSC_VER < 1300) // VC++ 6.0... using namespace std; pCType_ = &_USE(loc, ctype<E> ); #else pCType_ = &std::use_facet<std::ctype<E> >(loc); #endif } // Conversion... std::basic_string<E, T, A> operator() (const std::string& str) const { typename std::basic_string<E, T, A>::size_type srcLen = str.length(); const char* pSrcBeg = str.c_str(); std::vector<E> tmp(srcLen); pCType_->widen(pSrcBeg, pSrcBeg + srcLen, &tmp[0]); return std::basic_string<E, T, A>(&tmp[0], srcLen); } }; // How to use it... int main() { Widen<wchar_t> to_wstring; std::string s = "my test string"; std::wstring w = to_wstring(s); std::wcout << w << L"\n"; }Falls jemand eine Lösung aus der Standardlib oder Boost hat, würde ich mich auch freuen.
-
Für Windowsuser:
http://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=4701
-
also bei mir funktioniert dies leider nicht so wie ich möchte

ich hab in einen normalen std::string folgenden inhalt drinnen: "Magia wrÂoÇzb"
der inhalt müsste ist eigentlich im ISO/IEC 6937 standard sein. jetzt hab ich mir gedacht, vielleicht kann ich dies automatisch konvertieren mittels wstring, leider bricht die konvertierung ab.
das ergebnis sollte "Magia wróżb" sein und ist polnisch.
wenn man nach wstring und iso 6937 sucht erhält man komischerweise ergebnisse, dass der wstring dies kann, aber leider findet man keine konvertierung die ich verwenden könnte bzw. hinweise.hat jemand eine idee???
danke