
Robert Ramey wrote:
Note the the serialization library contains code for doing exactly this. Its in the subdirectory Dataflow Iterators. It was needed to serialize strings to wide character archives and to serialize wstirngs to char archives.
Robert Ramey
Stefan Slapeta wrote:
Hi all,
there have been many discussions (and proposals) on this topic in the last years, but was there any result and is there _anything_ in boost today that can be used to convert between std::string and std::wstring?
The Iostreams library will contain this functionality, too. (I'm rewriting it as we speak.) When I finish, converting between wide and narrow strings should look like this: #include <boost/iostreams/code_converter.hpp> #include <boost/iostreams/copy.hpp> using namespace std; using namespace boost::io; // Function object type for widening strings. template<typename Codecvt> struct widener : unary_function<string, wstring> { wstring operator() (string s) const { wstring result; converter<Codecvt, istringstream> cvt(s); boost::io::copy(cvt, back_inserter(result)); return result; } }; // Function object type for narrowing strings. template<typename Codecvt> struct narrower : unary_function<wstring, string> { string operator() (wstring s) const { ostringstream result; converter<Codecvt, ostringstream> cvt(result); boost::io::copy(boost::make_iterator_range(s), cvt); return result.str(); } }; The Dinkumware CoreX library also contains a component, wstring_convert, for this purpose. Since it doesn't make a detour through streams, it might be more efficient. Jonathan