1

たとえば、L"hao123--我的上网主页" のような wchar_t 文字列があります。これを utf8 に変換できます。

エンコーディングすると、出力文字列は「hao123锛嶏紞鎴戠殑涓婄綉涓婚〉」となりますが、最後にこれを書かなければなりません

文字列をプレーンテキストファイルに変換します。その形式は utf16 (他の人から知っています)、「hao123\uFF0D\uFF0D\u6211\u7684\u4E0A\u7F51\u4E3B\u9875」です。

C++ std 文字列で保存してからファイルに書き込む必要があるため、どうすれば変換できますか

"hao123锛嶏紞鎴戠殑涓婄綉涓婚〉" から "hao123\uFF0D\uFF0D\u6211\u7684\u4E0A\u7F51\u4E3B\u9875" へ char または C++ std 文字列 ?

誰でもヒントを教えてもらえますか?

前もって感謝します!

4

2 に答える 2

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';
}
于 2011-03-31T13:29:42.360 に答える
0

変換関数については自分で書きました。詳細については、C++ unicode UTF-16 encodingを参照してください。

于 2010-04-22T06:38:16.253 に答える