How to portably write std::wstring to file?
For std::wstring
you need std::wofstream
std::wofstream f(L"C:\\some file.txt");
f << str;
f.close();
std::wstring
is for something like UTF-16 or UTF-32, not UTF-8. For UTF-8, you probably just want to use std::string
, and write out via std::cout
. Just FWIW, C++0x will have Unicode literals, which should help clarify situations like this.
Why not write the file as a binary. Just use ofstream with the std::ios::binary setting. The editor should be able to interpret it then. Don't forget the Unicode flag 0xFEFF at the beginning. You might be better of writing with a library, try one of these:
http://www.codeproject.com/KB/files/EZUTF.aspx
http://www.gnu.org/software/libiconv/
http://utfcpp.sourceforge.net/