0

(かなり) 古い C コードを VS2010 に変換しています。マルチバイト オプションを使用してプログラムをコンパイルすると、すべて正常に動作しますが、UNICODE に変換する必要があります。

文字列の会話に関連するエラー メッセージが大量に表示されます (ただし、異常ではありません)。私の問題は、(UNICODE のため) wchar 文字列を操作する必要があるという事実に関連していますが、標準の char 値も保持する必要があります (プログラムは標準の ascii コードでファイルにデータを書き込む必要があります)。

より明確にするために、Windows での作業には UNICODE が必要ですが、ファイルは ascii 形式で保存する必要があります。多くの場所でエラーが発生するため、ここにその質問を掲載することにしました。

somoene が、この種の問題のベスト プラクティスを提案してくれませんか?

前もって感謝します!

編集:

ええと、私は C/C++ の専門家ではありません。これは私の最初の大規模なプロジェクトです。次のような最初の回答からあなたの提案を試しました:}

    { 
TCHAR* strz1=_T("%u blocks converted.");
      if (n>0) 
      {
      sprintf(str,strz1,n)
      }
      else
      TCHAR* strz2=_T("No blocks found!"); 
      sprintf(str,strz2);
      TCHAR* strz3=_T("Status");
      MessageBoxW(hwnd,str,strz3,MB_OK|MB_ICONINFORMATION);
      return(fe);
    }

有名なエラーが発生しています:

エラー C2664: 'sprintf': パラメーター 2 を 'TCHAR *' から 'const char *' に変換できません

エラー C2664: 'MessageBoxW': パラメーター 2 を 'char [32]' から 'LPCWSTR' に変換できません

4

1 に答える 1

2

MFC を使用している場合は、CString の次の変換マクロを確認してください: ATL および MFC 文字列変換マクロ。

そうすれば、ファイルを UTF-8 でエクスポートし、UTF-8 から UTF-16 に読み戻すことができます。これは、wchar_s を保存する自然な方法です。そうすれば、アプリケーションで UNICODE を使用しながら ASCII でエクスポートできます (UTF-8 は ASCII と下位互換性があります)。

于 2012-06-03T13:16:17.827 に答える