Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to portably write std::wstring to file?

Tags:

I have a wstring declared as such:

// random wstring std::wstring str = L"abcàdëefŸg€hhhhhhhµa"; 

The literal would be UTF-8 encoded, because my source file is.

[EDIT: According to Mark Ransom this is not necessarily the case, the compiler will decide what encoding to use - let us instead assume that I read this string from a file encoded in e.g. UTF-8]

I would very much like to get this into a file reading (when text editor is set to the correct encoding)

abcàdëefŸg€hhhhhhhµa 

but ofstream is not very cooperative (refuses to take wstring parameters), and wofstream supposedly needs to know locale and encoding settings. I just want to output this set of bytes. How does one normally do this?

EDIT: It must be cross platform, and should not rely on the encoding being UTF-8. I just happen to have a set of bytes stored in a wstring, and want to output them. It could very well be UTF-16, or plain ASCII.

like image 609
Oystein Avatar asked Oct 29 '10 16:10

Oystein


1 Answers

For std::wstring you need std::wofstream

std::wofstream f(L"C:\\some file.txt"); f << str; f.close(); 
like image 112
ST3 Avatar answered Oct 23 '22 19:10

ST3