C++ アプリケーションの Unicode 対応

提供: RAD Studio
移動先: 案内検索

C++ 用 Unicode:インデックス への移動


デフォルト文字列が Unicode であるため、RAD Studio フレームワークおよびライブラリを使用するいずれの C++ コードも、Unicode 対応でなければなりません。開発者はコードが、ナロー文字列とワイド文字列を両方とも、[_TCHAR のマップ先] オプション([プロジェクト|オプション...|C++(共有オプション)ダイアログ ボックス内)を使用して正確に処理できるようにしておく必要があります。

メモ: 新規の C++ アプリケーションでは、自動的に [_TCHAR マッピング] オプションが wchar_t に設定され、_tmain(...) エントリ ポイント(main にマップされる)が含まれています。_TCHAR マッピングが設定された C++ アプリケーションは、自動的に正しいマップ関数を使用します。

C++ における Unicode 関連の問題

C++ には、Delphi を使用した場合には発生しない Unicode に関連する固有の問題があります。 これらの問題は、RAD Studio フレームワークやライブラリが Unicode 文字列を使用している際に、C++ RTL および Windows API がデフォルトでナロイングされることに起因します。問題の一部について以下で説明します。

RAD Studio フレームワーク、ライブラリ、C++ RTL の利用

RAD Studio フレームワークおよびライブラリは、Unicode を使用しており、それに対して C++ RTL はデフォルトでナロー型ですが、ワイド文字列とナロー文字列の両方のルーチンを含んでいます(「マップ関数」を参照)。 そのため、RAD Studio フレームワークおよびライブラリを使用するアプリケーションではワイド用の C++ RTL 関数を使用する必要があります。 ワイド文字列を使う必要があるアプリケーションで C++ RTL を使用するには、以下を行う必要があります:

  • _TCHAR のマップ先wchar_t に設定し、コード内で _TCHAR を使用する。
  • C++ RTL メンバの "マップ" 版を使用する(例:strcpy ではなく _tcscpy を使用する)。 「マップ関数」のリストを参照してください。

Windows API の使用

通常、Windows API はデフォルトではナロー型です。 この場合、[_TCHAR のマップ先]オプションが非常に役立ちます。ただし、RAD Studio フレームワークおよびライブラリを使用しない C++ アプリケーションでは、デフォルトでこのオプションがオフになっています([char]に設定されています)。

RAD Studio フレームワークおよびライブラリを使用しない C++ アプリケーションで Windows API を使用する場合、明示的に[TCHAR のマップ先]オプションを wchar_t に設定しなければなりません([プロジェクト|オプション...|C++(共有オプション) ダイアログ ボックス内)。

文字列定数の受け渡し

文字列定数("string constant" など)はナロー型(char*)のままであるため、PChar を取る、RAD Studio フレームワークおよびライブラリの関数に以前のように渡すことができません。 次のように定数の頭に L をつけると、定数を、PChar パラメータで RAD Studio フレームワークおよびライブラリの関数に渡すことができます:

L"文字列定数"

[_TCHAR のマップ先][wchar_t]に設定し、_TEXT マクロまたは _T マクロを使用した場合は、この変換が自動的に行われます。これについては「_TCHAR のマッピングMapping」で説明しています。

コード ページの設定

AnsiString 型のコード ページは、AnsiStringT<コード ページ> を使って設定できます。

Delphi と同じ次の事前定義型が利用できます。

メモ: UTF8 コード ページを使用し、API-RTL と RAD Studio フレームワークおよびライブラリの呼び出しの間で文字列をエンコードすることで、UTF8 エンコーディングを指定できます。 「UTF-8 変換ルーチン」を参照してください。

関連項目