VC++ でユニコード文字列をどのように使用すればよいですか? もちろん、UNICODE を #define する必要がありますが、文字列はどうでしょうか?
TEXT() または _T() マクロをすべてのテキストで使用する必要がありますか?それとも文字列の前に L を配置する必要がありますか? 最近はすべてのプログラムで Unicode を使用する必要があると私は考えています。
意見?
VC++ でユニコード文字列をどのように使用すればよいですか? もちろん、UNICODE を #define する必要がありますが、文字列はどうでしょうか?
TEXT() または _T() マクロをすべてのテキストで使用する必要がありますか?それとも文字列の前に L を配置する必要がありますか? 最近はすべてのプログラムで Unicode を使用する必要があると私は考えています。
意見?
それはあなたが何を達成したいかによります。コードが Unicode の有無にかかわらず正しくコンパイルされて動作することを確認するには、TEXT
または_T
マクロを使用し、「既定の」Win32 関数名 (たとえばCreateWindow
) を呼び出します。
プログラムが常に Unicode API を使用するようにしたい場合はL
、文字列の前にプレフィックスを使用し、Win32 関数のワイド バージョン ( などCreateWindowW
) を呼び出す必要があります。
UNICODE
後者の場合、が定義されているかどうかに関係なく、Unicode の動作が得られます。UNICODE
前者の場合、アプリケーションはが定義されているかどうかに基づいて動作を変更します。
非 Unicode バージョンは Win98 以降はあまり関係がないという意見に同意するので、2 番目の方法を使用します。
L
プレフィックス付きの Unicode 文字列リテラルを宣言します。
TEXT()
または_T()
マクロは、Windows の Unicode バージョンと非 Unicode バージョン (Windows 9x) の両方で単一のソースをコンパイルする必要があった、悪しき時代のためのものでした。ありがたいことに、今日は Windows 9x を安全に無視できます。
少し前に学んだこと:
フレームワークが行うように設計されていることを実行します。Windows を使用している場合は、 を使用_T
して、コードを文字タイプから独立させます。Linux を使用している場合は、UTF-8 を使用してください。クロスプラットフォームのフレームワークを使用している場合は、それが行うことは何でもしてください。ただし、よほどの理由がない限り、独自のものを発明しようとしないでください。(通常、フレームワークに対して作業する価値はありません。)