C++ の文字定数
文字定数は 基本ソース文字セット プログラムを記述 ' 単一引用符 () で囲まれた文字セットの一つ以上のメンバーです。これらの 基本文字セット 実行 プログラムを実行するコンピューターの文字セットの文字を表すために使用されます。
Microsoft 固有の仕様 →
Microsoft C/C++ コンパイラではソースおよび実行 ASCII 文字セットは両方ともです。
基本ソース文字セットは 96 文字で構成されます : 空白文字 ; 水平タブ垂直タブフォーム フィード文字と改行文字を表す制御 ; 次の 91 文字 :
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZ
0123456789
_{} [出力] (#) <>%: ; ")。*+-/^ |~! = 」\ 「
基本的な実装文字セットは基本ソース文字の文字で設定された警告BackSpace キーキャリッジ リターンと null 値を表す制御文字または構成されます。
終了 Microsoft 固有の仕様→
3 種類の文字定数があります :
通常の文字定数
Multicharacter の定数
文字定数
[!メモ]
移植性を確認するために multicharacter の定数の代わりに文字定数を使用します。
文字定数は単一引用符で囲まれている一つ以上の文字として指定されます。次に例を示します。
char ch = 'x'; // Specify normal character constant.
int mbch = 'ab'; // Specify system-dependent
// multicharacter constant.
wchar_t wcch = L'ab'; // Specify wide-character constant.
mbch が int 型であることに注意してください。その型 char として宣言されている場合は第 2 バイトは保持されません。multicharacter の定数に 4 個の有効な文字が含まれています ; 指定または 4 をエラー メッセージが生成されます。
文字定数内の改行文字はバックス \ ラッシュ単一引用符と二重引用符 「「を除外ソース文字セットの文字表示される場合もありますがエスケープ シーケンスを使用して指定されることがあります。エスケープ シーケンスの 3 種類があります : 単純8 進数16 進数のエスケープ シーケンス。
単純なエスケープ シーケンスを次のいずれかである可能性があります :
\' \" \? \\
\a \b \f \n \r \t \v
8 進数のエスケープ シーケンスは最大 3 つまでの 8 桁のシーケンスに続くバックス ラッシュです。
16 進数のエスケープ シーケンスは 16 進数の数字のシーケンスに続く文字に続く X をバックス ラッシュです。
Microsoft C++ は標準 multicharacter文字定数をサポートします。拡張実行文字セットのメンバーを指定するには文字定数を使用します (たとえば国際対応アプリケーションをサポートします)。通常の文字定数の型 char はmulticharacter の定数に型 int があり文字定数の型 wchar_t があります。(型 wchar_t は標準のインクルード ファイルSTDLIB.H STDDEF.H および STRING.H. を定義します。ワイド文字は機能しますがSTDLIB.H. でプロトタイプだけになります)
標準文字定数との間に固有の唯一の違いは文字定数の文字 L が表示されます。次に例を示します。
char schar = 'x'; // Normal character constant
wchar_t wchar = L'\x8119'; // Wide-character constant
次の表は文字定数の中にシステムに依存または予約文字は使用できません。nongraphic かを示します。これらの文字をエスケープ シーケンスと表される必要があります。
予約されて Nongraphic または C++ の文字
文字 |
ASCII 文字。 表現 |
ASCII 文字。 値 |
エスケープ シーケンス |
---|---|---|---|
改行 |
NL LF () |
10 または 0x0a |
\n |
水平タブ。 |
HT |
9 |
\t |
垂直タブ |
VT |
11 または 0x0b |
\v |
バックスペース |
BS |
8 |
\b |
キャリッジ リターン |
CR |
13 または 0x0d |
\r |
フォーム フィード文字 |
FF |
12 または 0x0c |
\f |
警告 |
ビープ音 |
7 |
\a |
円記号 |
\ |
92 または 0x5c |
\\ |
疑問符 |
? |
63 または 0x3f |
\? |
単一引用符 |
' |
39 または 0x27 |
\' |
二重引用符 |
" |
34 または 0x22 |
\" |
8 進数 |
ooo |
— |
\ooo |
16 進数 |
hhh |
— |
\ xhhh |
Null 文字 |
NUL |
0 |
\0 |
バックス ラッシュに従っている文字が可能なエスケープ シーケンスを指定しない場合結果は定義する実装です。Microsoft C++ ではバックス ラッシュに続く文字をエスケープされていないレベル 1 の警告 (「認識できない文字のシーケンス エスケープエスケープ」) が発行されたときに正確に取得され。
\ooo フォームで指定した 8 進数のエスケープ シーケンスはバックス ラッシュおよび 1 ビット2 ビットまたは 3 ビットの 8 文字で構成されます。\ xhhh フォームで指定した 16 進数のエスケープ シーケンスは 16 進数の数字のシーケンスに続く文字 \x で構成されます。8 進数のエスケープ定数とは異なりエスケープ シーケンスの 16 桁の 16 進数に制限はありません。
8 進数のエスケープ シーケンスは 8 桁ではない場合または 3 文字が含まれる最初の文字で終了します。次に例を示します。
wchar_t och = L'\076a'; // Sequence terminates at a
char ch = '\233'; // Sequence terminates after 3 characters
同様に16 進数のエスケープ シーケンスは 16 進数の数字ではない最初の文字で終了します。16 進数の数字が f によって F して文字 aA (と) が含まれているためエスケープ シーケンスが必要とされる数字で終わることを確認します。
単一引用符 () が ' 文字定数の最後ため囲まれた単一引用符を表すためにはエスケープ シーケンス \' を使用します。二重引用符 () はエスケープ シーケンス " なしで表すことができます。円記号 (\) はその行の末尾にある場合は連結文字です。円記号を文字定数の中には2 種類のバックス ラッシュ続行する必要があります (\\)。(の行連結に関する詳細については プリプロセッサの参照 の 移動のフェーズ を参照してください)。