4

6か月から1年先の少し退屈な仕事があります. 私は 100 万行以上のコード (その多くは 90 年代前半/半ばに書かれたもの) を含むプログラムに取り組んでおり、UNICODE ビルドをサポートする必要があると判断されました。私は多くのベストプラクティスを調査し、見つけました。

  • sprintf_s() の代わりに _stprintf_s() や strstr() の代わりに _tcsstr() のような多くの Microsoft および C++ メソッドの _t バージョンを使用する
  • _T("string") または _T('c') のように、TCHAR* にする必要があるすべてのコード化された文字列をラップします。
  • ほとんどの char* を LPTSTR に、ほとんどの const char* を LPCTSTR に、char を TCHAR に置き換え、必要に応じて CA2T() および CT2A() を使用して char* と LPTSTR の間で変換します。

これらの変更の多くを自動的に行うことができるスクリプトを誰かが作成したかどうか疑問に思っていました。何ヶ月もの作業を節約できるからです。

4

1 に答える 1

4

このアプローチはあなたのシナリオにぴったり合っていると思います。

すべての文字列を狭い文字のままにして、前と同じようにsprintfandを使用しstrstrて、常に BOM なしの UTF-8 であると想定されるテキスト ファイルから読み書きします。変更する必要があるのは、システムとの通信だけです。文字列が UTF-8 であり、MFC または Windows を呼び出す前に、その場で UTF-16 に変換するとします。

おまけとして、Microsoft が提唱するアプローチと比較して、Windows 以外のプラットフォームへの移植が容易になります。

于 2012-06-16T18:39:08.387 に答える