【发布时间】:2011-05-02 12:29:50
【问题描述】:
我有一个 wstring 声明如下:
// random wstring
std::wstring str = L"abcàdëefŸg€hhhhhhhµa";
文字将是 UTF-8 编码的,因为我的源文件是。
[编辑:根据 Mark Ransom 的说法,情况不一定如此,编译器将决定使用什么编码 - 让我们假设我从编码的文件中读取这个字符串,例如UTF-8]
我非常希望将其放入文件读取中(当文本编辑器设置为正确的编码时)
abcàdëefŸg€hhhhhhhµa
但是ofstream 不是很配合(拒绝接受wstring 参数),而且wofstream 据说需要知道语言环境和编码设置。我只想输出这组字节。一般人是怎么做到的?
编辑:它必须是跨平台的,并且不应依赖编码为 UTF-8。我恰好在wstring 中存储了一组字节,并想输出它们。它很可能是 UTF-16 或纯 ASCII。
【问题讨论】:
-
Win32 API 为此提供了
WideCharToMultiByte。 -
我需要一个跨平台的解决方案,对不起。
-
为什么不使用 C++ 的标准语言环境功能? stdcxx.apache.org/doc/stdlibref/codecvt-byname.html
-
@basilevs:查看对您答案的评论
-
更多
L""字符串编码信息:stackoverflow.com/questions/1810343/…
标签: c++ file unicode wstring wofstream