utf8和utf16转换

时间:2010-04-20 09:33:15

标签: c++ utf-8 utf-16 stdstring wchar-t

我有一个wchar_t字符串,例如,L“hao123--我的上网主页”,我可以将其转换为utf8

编码,输出字符串是“hao123鎴涓涓涓涓>>”,但最后,我必须写这个

字符串到纯文本文件,其格式为utf16(我从别人那里得知),“hao123 \ uFF0D \ uFF0D \ u6211 \ u684 \ u4E0A \ u7F51 \ u4E3B \ u9875”。

因为我必须将它保存在C ++ std字符串中,然后将其写入文件,我该如何转换

在“char或C ++标准字符串”中,“hao123”或“hao123 \ uFF0D \ uFF0D \ u6211 \ u684 \ u400 \ u6101 \ u4005 \ u8E0A \ u7F51 \ u4E3B \ u9875”

有人能给我一些提示吗?

提前致谢!

2 个答案:

答案 0 :(得分:3)

在C ++ 11中,这可以通过以下方式完成:

#include <locale>
#include <codecvt>
#include <string>
#include <iostream>

int main()
{
    std::wstring_convert<std::codecvt_utf16<wchar_t> > myconv;
    std::wstring ws(L"hao123--\x6211\x7684\x4E0A\x7F51\x4E3B\x9875");
    std::string bs = myconv.to_bytes(ws);
    std::cout << bs << '\n';
}

答案 1 :(得分:0)

我自己撰写转换功能,有关详细信息,请访问C++ unicode UTF-16 encoding