2006-02-08から1日間の記事一覧

結論

C の locale は全ての処理系で問題なく動くようです。 C++ の locale による MultiByte・WideChar の相互変換がまともに動くのはVisualStudio2005 だけですね。 ということで、負けた気がしますが C の locale を使うことにします…。orz

変換結果

bcb6(C++Builder6J) の場合 c++locale の MultiByte→WideChar 変換で途中で切れてしまっていることがわかります。 WideChar オリジナル 307e 305f 660e 65e5 96fb 8a71 3057 307e 3059 3001 3068 306e 3053 3068 3067 3057 305f 3002 0000 MultiByte→WideCha…

実験方法

以下の文字列を MultiByte と WideChar それぞれで用意し、C の locale と C++ locale を使って変換してみました。 文字列 ま た 明 日 電 話 し ま す 、 と の こ と で し た 。 MultiByte の場合 82 dc 82 bd 96 be 93 fa 93 64 98 62 82 b5 82 dc 82 b7…

MultiByte・WideChar 相互変換のコード

MultiByte → WideChar 変換の場合は const char* を変換して結果を std::wstring にセット、逆は const wchar_t* を変換して結果を std::string にセット、というインターフェースを持つ関数として、 C の locale・C++ の localeで、また参考までに Win32・C…

locale の対応状況調査(その2)

次に、char(MultiByte) と wchart_t(WideChar) の変換についても調べてみました。 というのも、C++Builder6J で std::locale を使って MultiByte から WideChar に変換すると文字列が途中で欠けてしまう、という問題があり、当時は仕方なしに Win32 API で凌…