2014年11月2日1件のコメントこんにちは、Sayahamittです。VC++に持ってきたら文字コードでハマったのでメモしておきます。今回は引数にUTF8エンコードのstd::string型文字列を取り、ShiftJISエンコードのstd::string文字列を返す関数と、その逆をやる関数を作りました。API依存コードです。ごめんなさいm(__)mWindowsでは内部的な処理にはUnicodeが使われているにも関わらず、コンソールにおける入出力を始めAPIなど、ユーザーとのインターフェースには未だにShift-JISが使われているようで、UTF8など多バイト文字を直接利用出来ません。WindowsAPIなんて殆ど触ったことがない自分も、もれなくこの問題に引っかかりました。利用する場合にはMultiByteToWideCharメソッドとWideCharToMultiByteメソッドを用いてUTF8とShiftJISの相互変換が実現できるようです。上記の両メソッドを利用する場合は1.一度変換元文字列を1バイト文字の文字列として読み込んで、それをUnicodeな多バイト文字型に変換2.Unicodeな多バイト文字列をShiftJISに変換という手順が必要なようです。自分は当初、変換表のようなものを使って一発で変換できると思っていたので少し戸惑いました。́・ω・`)何はともあれ、大事なのはコードですコード。MultiByteToWideCharメソッドとWideCharToMultiByteメソッドの詳しい説明はMSDNのページを参照して下さい。(自分にはチンプンカンプンで何も分からん)以下、取り敢えず動いたコード。strUTF8;}相互変換の両者の違いは、UTF8に関連する文字列とShiftJISに関連する文字列が丸っと全部入れ替わるだけです。上記のコードは以下のサイトを丸パクr参考にさせて頂きました。2015年3月25日エンコードの変更につまずいていたので助かりました。一個分しかfreeしてません。1はbufUnicodenobufferのsizeを超えています。-1かlengthUnicodeが(仕様書が正しければ)お勧めです。lengthUTF8が書き込みに対するガードをしてるかが読み込みを止めてるようなので、問題無いようですが。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。コメントデータの処理方法の詳細はこちらをご覧ください。