ワイド文字定数と複数文字定数

提供: Appmethod Topics
移動先: 案内検索

文字定数の概要:インデックス への移動


ワイド文字リテラル

char 型に割り当てられる記憶領域に収まらない文字を表すのに、ワイド文字型を使用することができます。 ワイド文字は 2 バイト領域に格納されます。

直前に L の付いた文字定数は、wchar_t データ型(stddef.h に定義)のワイド文字定数です。 以下に例を示します。

wchar_t ch = L'A';

wchar_t は、C プログラムで使用される場合は、stddef.h ヘッダー ファイルに定義されている型です。 C++ プログラムの場合、wchar_t は、サポートされるあらゆるロケールにおける最大の拡張文字セットのどのような要素についても別個のコードを表すことができるキーワードです。 Appmethod C++ では、wchar_t のサイズ、符号の有無、アラインメント要件は unsigned short 型と同じです。

直前に L の付いた文字列はワイド文字の文字列です。 文字列のメモリ割り当ては、1 文字ごとに 2 バイトです。 以下に例を示します。

wchar_t *str = L"ABCD";

C++0x での Unicode リテラル

C++0x 拡張には、char16_tchar32_t という新しい 2 つの文字型が用意されています。 これらは Unicode 文字を表すことができます。char16_tchar32_t は C++0x ではキーワードです。char16_t は、UTF-16 でエンコードされた Unicode 文字を表すのに使用できる 16 ビット文字型を定義します。char32_t は、UTF-32 でエンコードされた文字を表すのに使用できる 32 ビット文字型を定義します。

UTF-16 や UTF-32 でエンコードされたリテラルについては、以下の新しい書式を使用できます。

  • 直前に u の付いた文字定数は、UTF-16 でエンコードされた、char16_t データ型の Unicode 文字です。
  • 直前に U の付いた文字定数は、UTF-32 でエンコードされた、char32_t データ型の文字です。
  • 直前に u の付いた文字列リテラルは、UTF-16 でエンコードされた、char16_t データ型の Unicode 文字で構成されます。
  • 直前に U の付いた文字列リテラルは、UTF-32 でエンコードされた、char32_t データ型の文字で構成されます。

複数文字定数

コンパイラでは、複数文字定数もサポートしています。 複数文字定数は 4 個もの文字で構成できます。 たとえば、定数 '\006\007\008\009' は Appmethod C++ プログラムでのみ有効です。 複数文字定数は常に 32 ビットの int 値です。 これらの定数は、他の C++ コンパイラへの移植性はありません。

関連項目