002
17.12.2007, 23:21 Uhr
xXx
Devil
|
Ich denke mal das er von std::wstring nach std::string umwandeln will Hab es bei mir noch nicht ganz fertig ... aber hier:
C++: |
#include <locale> #include <vector> #include <string>
template<class dest_type, class source_type> inline const std::basic_string<dest_type> char_cast(std::basic_string<source_type> const & source, std::locale const & loc = std::locale::classic()) { std::vector<dest_type> result (source.length(), 0); mbstate_t state; const source_type* ptr_source_next; dest_type* ptr_dest_next; std::use_facet<std::codecvt<dest_type, source_type, mbstate_t> >(loc).in(state, &source[0], &source[0] + source.length(), ptr_source_next, &result[0], &result[0] + result.size(), ptr_dest_next); return std::basic_string<dest_type>(&result[0], ptr_dest_next - &result[0]); }
template<> inline const std::basic_string<char> char_cast(std::basic_string<char> const & source, std::locale const &) { return source; }
template<> inline const std::basic_string<wchar_t> char_cast(std::basic_string<wchar_t> const & source, std::locale const &) { return source; }
|
Vllt kann es 0xdeadbeefy oder so mal korrigieren, denn ich bin mir noch nicht 100%ig sicher bei dem Template ... |