文字列をSJISにする

CStringに放り込めばSJISになってくれるようです。

最後はWindowsの.NET環境と言う事でC++/CLIでの例をおまけとして。幾つか試してみましたが結局はMFC/ATLのCStringを使って変換するのが一番簡単で間違いが無いようです。

// ------ C++/CLI (おまけ) ----------------------------------
 // マネージコードUnicode文字列を変換してMFCのCStringに格納
 String^ str = L"日本語";
 CStringA sjisStr = str; // 手抜きだけど一番楽かと…
// ----------------------------------------------------------

UnicodeからShift-JISへの変換 - LangEdge Weblog

今作業しているプロジェクトでしか試していませんが、以下のような感じで、なんだかうまくいきました。

  // Unicodeの元データ .. char strCurPw;
  CString  csCurPw( strCurPw );

  // void hoge( LPCTSTR str );
  // という感じのSJIS文字列が欲しい関数に渡す.
  hoge( csCurPw );

TCHARとか文字コードとかあんまり詳しく追いたくないので、この辺で逃げまくります。