HOWTO · C++

C++ エスケープ文字

この記事では、C++ を使用した文字列リテラルのエスケープ文字の規則について説明します。

このページの内容

このチュートリアルでは、最初に C および C++ のエスケープ文字について説明します。ここでの唯一の注意点は、16 進コードを使用することは、ASCII 互換の文字エンコードを前提としていることです。

C++ の制御文字

\a \x07 ほとんどのコンピューターでベルサウンドを生成するアラート(ベル)
\b \x08 バックスペース
\t \x09 水平タブ
\n \x0A 改行
\v \x0B 垂直タブ
\f \x0C フォームフィード
\r \x0D キャリッジリターン(ほとんどのコンピューターではEnterキー)
\e \x1B エスケープ(これは非標準です。常にこれが見つかるとは限りません)

C++ のパンクチュエーション文字

\"は引用符(二重アポストロフ)です。また、文字が'"'と書かれている場合は、バックスラッシュは必要ありません。

\'=アポストロフ。繰り返しになりますが、特定のケースではバックスラッシュは必要ありません。今回は"'"です。

\? =疑問符(ただし、トリグラフを避けるなど、特定の場合にのみ使用されます。C では、トリグラフは 3 文字のグループであり、一緒に使用すると特定の意味を持ちます。

たとえば、??= トリグラフは # 句読点に相当します。詳細については、このドキュメントを参照してください。

\\=バックスラッシュ。バックスラッシュを書く必要があるときのために。

C++ での数値文字参照

\ +(プラス記号)任意の 3 オクタル桁。

\x + と任意の数の 16 進数。コンパイラは、最初の非 16 進数に遭遇するまで、16 進数を読み取り、最初の非 16 桁に遭遇した後、現在の文字の数字の読み取りを停止することに注意してください。

\u + に 4 桁の 16 進数を加えたもの(Unicode BMP、C++ 11 で追加)。

\U + に 8 桁の 16 進数を加えたもの(Unicode アストラルプレーン、C++ 11 で追加)。

\0 =\00 = \000=ヌル文字。

もう 1つの特殊なケースは\e です。これは C または C++ では標準ではありませんが、一部のコンパイラでは\x1B を表すために使用されます。

たとえば、文字 0、ヌル文字 0、文字 0 の文字列をもう一度作成するなど、非標準的なものが必要な場合は、次の 2つがあります。オプション。

文字列連結構文:

std::string(
    "0\0"
    "0",
    3);

イニシャライザリストの構文:

std::string{'0', 0, '0'};

サイズの指定を避け、エスケープ文字の使用も完全に回避できるため、最初のオプションよりも後者のオプションを使用することをお勧めします。