Escape sequences
エスケープシーケンスは、 文字列リテラル および 文字リテラル 内の特定の特殊文字を表現するために使用されます。
以下のエスケープシーケンスが利用可能です:
|
エスケープ
シーケンス |
説明 | 表現 |
|---|---|---|
| 単純エスケープシーケンス | ||
\'
|
シングルクォート |
ASCIIエンコーディングにおけるバイト
0x27
|
\"
|
ダブルクォート |
ASCIIエンコーディングにおけるバイト
0x22
|
\?
|
疑問符 |
ASCIIエンコーディングにおけるバイト
0x3f
|
\\
|
バックスラッシュ |
ASCIIエンコーディングにおけるバイト
0x5c
|
\a
|
可聴ベル |
ASCIIエンコーディングにおけるバイト
0x07
|
\b
|
バックスペース |
ASCIIエンコーディングにおけるバイト
0x08
|
\f
|
フォームフィード - 改ページ |
ASCIIエンコーディングにおけるバイト
0x0c
|
\n
|
ラインフィード - 改行 |
ASCIIエンコーディングにおけるバイト
0x0a
|
\r
|
キャリッジリターン |
ASCIIエンコーディングにおけるバイト
0x0d
|
\t
|
水平タブ |
ASCIIエンコーディングにおけるバイト
0x09
|
\v
|
垂直タブ |
ASCIIエンコーディングにおけるバイト
0x0b
|
| 数値エスケープシーケンス | ||
\
nnn
|
任意の8進数値 |
コードユニット
nnn
(1~3桁の8進数)
|
\o{
n...
}
(C++23以降)
|
コードユニット
n...
(任意の桁数の8進数)
|
|
\x
n...
|
任意の16進数値 |
コードユニット
n...
(任意の桁数の16進数)
|
\x{
n...
}
(C++23以降)
|
||
| 条件付きエスケープシーケンス [1] | ||
\
c
|
実装定義 | 実装定義 |
| ユニバーサル文字名 | ||
\u
nnnn
|
任意の
Unicode
値;
複数のコードユニットになる可能性あり |
コードポイント
U+
nnnn
(4桁の16進数)
|
\u{
n...
}
(C++23以降)
|
コードポイント
U+
n...
(任意の桁数の16進数)
|
|
\U
nnnnnnnn
|
コードポイント
U+
nnnnnnnn
(8桁の16進数)
|
|
\N{
NAME
}
(C++23以降)
|
任意のUnicode文字 |
NAME
で指定された文字
(詳細は
下記参照
)
|
-
↑
条件付きエスケープシーケンスは条件付きでサポートされる。各条件付きエスケープシーケンス内の文字
cは、 基本ソース文字セット (C++23まで) 基本文字セット (C++23以降) のメンバであり、他のエスケープシーケンスで\の後に続く文字ではない。
目次ユニバーサル文字名の範囲
注記\ 0 は最も一般的に使用される8進数エスケープシーケンスです。これは null終端文字列 の終端null文字を表すためです。 改行文字 \n は、 テキストモードI/O で使用される際に特別な意味を持ちます:OS固有の改行表現(通常は1バイトまたはバイトシーケンス)に変換されます。一部のシステムでは、行の末尾を長さフィールドでマークします。 8進数エスケープシーケンスは最大3桁の8進数を持ちますが、それより早く有効な8進数でない文字が現れた場合、そこで終了します。 16進数エスケープシーケンスには長さ制限がなく、有効な16進数桁ではない最初の文字で終了します。単一の16進数エスケープシーケンスで表される値が、この文字列リテラルで使用される文字型( char 、 char8_t 、 (C++20以降) char16_t 、 char32_t 、 (C++11以降) または wchar_t )が表す値の範囲に収まらない場合、結果は未定義です。
疑問符エスケープシーケンス \ ? は、文字列リテラル内での トライグラフ の解釈を防止するために使用されます: "??/" のような文字列は " \" としてコンパイルされますが、2番目の疑問符が "? \? /" のようにエスケープされると、 "??/" となります。 C++からトライグラフが削除されたため、疑問符エスケープシーケンスはもはや必要ありません。これはC++14(および以前のリビジョン)およびCとの互換性のために保持されています。 (C++17以降)
例
このコードを実行
出力: This is a test She said, "Sells she seashells on the seashore?" 欠陥報告以下の動作を変更する欠陥報告は、以前に公開されたC++標準に遡及的に適用されました。
関連項目
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||