ホーム  ざれごと  ワシントン州  ツール  NT豆知識  Win32プログラミングノート  私的用語  ジョーク  いろいろ  ゲーム雑記  Favorites  掲示板   Mail

Win32プログラミングノート --Unicode--

Last modified: Sun Nov 09 09:14:25 2003 PDT

一つ上へ

ここでの記述は、Visual C++(tm) Ver.6.0を元にしています

VC++でのUnicodeアプリケーションビルド設定


Unicode文字列の扱い

ANSI←→Unicode変換

MultiByteToWideChar()とWideCharToMultiByte() APIを使います。

ANSI文字列は、1文字につき最大Unicode1文字を占めます。 DBCS文字の場合には、2文字につきUnicode1文字を占めます。 Unicodeの1文字は、最大2バイトのANSI文字に変換されます。

したがって、バッファサイズに関しては、以下の原則があります。

追記: ここでの議論は、サロゲートを考慮していません。 正しくサロゲートを扱うためにはおおざっぱな計算によらず、やはり API に頼らざるを得ません。

VC++での文字・文字列操作マクロ

Win32/VC++では、Unicode/MBCSどちらでコンパイルしても、正しい関数を呼び出すためのマクロが用意されています。

例えば、文字列のコピーには通常 strcpy() を使いますが、これに対応するVC++のマクロは _tcscpy() です。 これは、tchar.hで次のように定義されています。

#ifdef _UNICODE
#define _tcscpy     wcscpy
#else
#define _tcscpy     strcpy
#endif

この他に用意されているマクロを、!UNICODEの場合の定義とともに挙げておきます。

Since 1996

一つ上へ

ホーム  ざれごと  ワシントン州  ツール  NT豆知識  Win32プログラミングノート  私的用語  ジョーク  いろいろ  ゲーム雑記  Favorites  掲示板   Mail