ここから本文です

UTF-8をprintfで表示したいのですが。

fen********さん

2012/6/1011:18:48

UTF-8をprintfで表示したいのですが。

ニコ生のコメントを以下のサイトをつかってstd::stringに格納しています。

取得したコメントのstringのデータの文字コードが「UTF-8」らしいのですが

入力したstring(UTF-8)をなんとかprintfで出力するためにchar*型に変換できないでしょうか?

よろしくお願いします。

補足http://d.hatena.ne.jp/ichhi/20110316/1300267466

閲覧数:
2,405
回答数:
1

違反報告

ベストアンサーに選ばれた回答

y_a********さん

2012/6/1015:06:55

確認してないですがこんな感じでいかがでしょうか?

BYTE* utf8_to_sjis( BYTE* buf_utf8, int* size )
{
/*UTF-8からUTF-16へ変換*/
const int len_utf16 = ::MultiByteToWideChar( CP_UTF8, 0, (LPCSTR)buf_utf8, -1, NULL, 0 );
BYTE* buf_utf16 = new BYTE[ len_utf16 * 2 + 2 ];
::MultiByteToWideChar( CP_UTF8, 0, (LPCSTR)buf_utf8, -1, (LPWSTR)buf_utf16, len_utf16 );

/*UTF-16からShift-JISへ変換*/
const int len_sjis = ::WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)buf_utf16, -1, NULL, 0, NULL, NULL );
BYTE* buf_sjis = new BYTE[ len_sjis * 2 ];
ZeroMemory( buf_sjis, len_sjis * 2 );
::WideCharToMultiByte( CP_ACP, 0, (LPCWSTR)buf_utf16, -1, (LPSTR)buf_sjis, len_sjis, NULL, NULL );

delete buf_utf16;
return buf_sjis;
}

この回答は投票によってベストアンサーに選ばれました!

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる