I need a code in C++ to convert a string given in wchar_t*
to a UTF-16 string. It must work both on Windows and Linux. I've looked through a lot of web-pages during the search, but the subject still is not clear to me.
As I understand I need to:
setlocale
with LC_TYPE and UTF-16 encoding.wcstombs
to convert wchar_t
to UTF-16 string.setlocale
to restore previous locale.Do you know the way I can convert wchar_t*
to UTF-16 in a portable way (Windows and Linux)?
There is no single cross-platform method for doing this in C++03 (not without a library). This is in part because wchar_t
is itself not the same thing across platforms. Under Windows, wchar_t
is a 16-bit value, while on other platforms it is often a 32-bit value. So you would need two different codepaths to do it.