エスケープシーケンスを理解する
C++ のエスケープ シーケンスを使用すると、文字列内で制御機能を実行する文字を、コードと誤認されることなくテキストの一部にすることができます。初心者にとってよくある落とし穴の 1 つは、リテラル文字列内に引用符を含めることに関する混乱です。たとえば、次のコード行は、「\t エスケープ シーケンス」を囲む引用符によって文字列が途中で終了するため、コンパイル エラーが発生します。
文字列テキスト = 「この記事は、 \t エスケープ シーケンス」を例を使って説明します。 ;C++ プログラムでこれを修正するには、バックスラッシュ「\」をエスケープ文字として使用し、後続の文字が特別な解釈を持つことをコンパイラーに通知します。その方法は次のとおりです。
文字列テキスト = 「この記事は、\」 \\ サンプルを使用してエスケープ シーケンスを実行します。」 ;
C++ の特殊文字 (\t) の詳細
「\t」シーケンスは単なるスペースツールではありません。これは、カーソルを次のタブ位置に移動させるタブ文字を表します。これは、端末アプリケーションできちんとフォーマットされたテキスト表示を作成する場合に特に便利です。 「\t」以外にも、C++ はさまざまな目的に応じたさまざまなエスケープ シーケンスをサポートしています。たとえば、「\n」は新しい行を作成します。ただし、この記事では、C++ の「\t」エスケープ シーケンスのみに焦点を当て、その目的と使用法を示す例を示します。これにより、プログラミング タスクで水平タブを効果的に使用するための知識が得られます。 C++ プログラムにおける「\t」エスケープ シーケンスの動作を理解するために例に進みましょう。
例 1:
次の C++ コード例には、テキストをコンソールに出力するために使用される単純なプログラムが含まれています。次のコードを参照してください。後で説明します。
#include
名前空間 std を使用する ;
整数 主要 ( ) {
コート << 「これはテキストの最初の行です。」 << 終わり ;
コート << 「これはテキストの 2 行目です。 \t 」 ;
コート << 「この行の後には \\ エスケープシーケンスです。」 ;
戻る 0 ;
}
コードの各部分の詳細は次のとおりです。
#include
名前空間 std を使用します。 – このコードを使用すると、標準ライブラリに含まれる名前を「std::」というプレフィックスを付けずに使用できます。たとえば、「std::cout」の代わりに「cout」と書くことができます。
int main() { – これは、すべての C++ プログラムの main 関数の宣言およびエントリ ポイントです。 「main」の前の「int」は通常、関数が整数値を返すことを示します。
cout << 「これはテキストの最初の行です。」<
cout << 「これはテキストの 2 行目です。\t」; – ここで、プログラムは「これはテキストの 2 行目です。\t」という別の文字列を出力します。最後の「\t」に注目してください。コンソールに出力すると、テキストの直後に水平タブ スペースが追加されます。
cout << 「この行の後には \\t エスケープ シーケンスが続きます。」; – この行では、プログラムは「この行の後には \t エスケープ シーケンスが続きます。」と出力します。 「\\t」エスケープ シーケンスは、出力に文字通り「\t」を含めるために使用されます。これは、バックスラッシュ「\」自体が別のバックスラッシュによってエスケープされ、「\t」自体が水平タブの代わりに出力されるためです。
0を返します。 – これは main 関数の終了を示し、プログラムの実行が成功したことを示す 0 を返します。このプログラムを実行すると、出力は次のようになります。
例 2:
ここで、別の例を見て、「\t」エスケープ文字の魔法を見てみましょう。この例は、標準の入出力ストリーム ライブラリを含み、標準の名前空間を使用する簡単な C++ プログラムです。このプログラムは、名前とそれに関連する都市と国の書式設定された表をコンソールに出力するように設計されています。
#include名前空間 std を使用する ;
整数 主要 ( ) {
コート << '名前 \t | \t 市 \t | \t 国' << 終わり ;
コート << 「------------------------------------------」 << 終わり ;
コート << 「アリス \t | \t 北京 \t | \t 中国' << 終わり ;
コート << 'ボブ \t | \t オースティン \t | \t アメリカ' << 終わり ;
コート << 「カテ \t | \t パリ \t | \t フランス' << 終わり ;
コート << 「デイビッド \t | \t ダーバン \t | \t 南アフリカ' << 終わり ;
コート << 「------------------------------------------」 << 終わり ;
戻る 0 ;
}
コードの内訳は次のとおりです。
また、 #include
名前空間 std を使用します。 – 「std::」というプレフィックスを付けなくても、「std」名前空間のエンティティを使用できるようになります。
の int main() { は、すべての C++ プログラムのエントリ ポイントです。プログラムを実行すると、ここから実行が開始されます。
main 関数内には次のものがあります。
cout << “名前\t|\t都市\t|\t国”<
cout << “——————————————-”<
次の 4 つの cout 行は、それぞれテーブルの行を出力します。これらの行はタブと同じ形式に従い、テーブル出力の作成の一部です。データの各行の後に、「endl」を使用して次の行に移動します。最後の cout 行でも、テーブルのデータの終わりを示す区切り線が出力されます。
0 を返す;: – この行は、プログラムが正常に実行されたことを示します。戻り値 0 は成功を示します。
このプログラムをコンパイルして実行すると、出力はコンソール上に表として表示され、個人の名前、都市、国が縦棒 (|) とタブで区切られた列にきちんと整列して表示されます。次の出力を参照してください。
注記: コンソール内のテキストの実際の配置は、コンソールまたは端末のタブ設定の幅によって異なり、その結果、システムによって表の外観が異なる場合があることに注意してください。
例 3:
このシンプルだが興味深い C++ プログラムは、「\t」タブのエスケープ シーケンスを利用して、画面上にひし形の形を印刷します。このコードは、サイズを指定し、ダイヤモンドの中心から上部または下部までの線の数を表す「ダイヤモンド」変数に基づいてダイヤモンドのサイズをスケーリングします。次のコードを確認してください。
#include名前空間 std を使用する ;
整数 主要 ( ) {
整数 ダイヤモンド = 3 ;
のために ( 整数 私 = 1 ; 私 <= ダイヤモンド ; ++ 私 ) {
のために ( 整数 j = 0 ; j < ダイヤモンド - 私 ; ++ j ) {
コート << 」 \t 」 ;
}
のために ( 整数 j = 0 ; j < 2 * 私 - 1 ; ++ j ) {
コート << 「* \t 」 ; }
コート << 終わり ;
}
のために ( 整数 私 = ダイヤモンド - 1 ; 私 >= 1 ; -- 私 ) {
のために ( 整数 j = 0 ; j < ダイヤモンド - 私 ; ++ j ) {
コート << 」 \t 」 ;
}
のために ( 整数 j = 0 ; j < 2 * 私 - 1 ; ++ j ) {
コート << 「* \t 」 ; }
コート << 終わり ;
}
戻る 0 ;
}
ご覧のとおり、このプログラムは 2 つの部分で構成されています。1 つはひし形の上半分を印刷し、もう 1 つは下半分を印刷します。ダイヤモンドの上半分は、最初に減少するタブの数を出力してインデントを作成し、次にタブで区切られたアスタリスク「*」の数を増加させることによって印刷されます。これは最初の「for」ループ内で処理されます。
下半分も同様に印刷されますが、ループを逆に繰り返してアスタリスクの数を減らし、再びインデントを増やして、ひし形の下半分を作成します。これは 2 番目の「for」ループで処理されます。
「diamond= 3」でプログラムを実行すると、出力はタブ文字により画面の中央に配置されたひし形のように見えます。この特定のプログラムの出力を参照してください。
タブの幅は使用するコンソールや端末によって異なるため、実際の表示は異なる場合があることに注意してください。
結論
C++ のエスケープ シーケンスは、標準出力ウィンドウでは容易に表示できない文字を表現するための強力なツールです。これらのシーケンスの中で、「\t」で示される水平タブは、テキスト内に制御された水平スペースを追加する場合に特に便利です。 「\t」を使用すると、プログラマはテキスト出力を整列させ、読みやすさを向上させ、データを体系的に構造化することができます。この文字は、キーボードの「タブ」キーを押すことを模倣し、カーソルを次のタブ位置に進めます。この記事では、C++ 言語内の「\t」エスケープ シーケンスの機能を検討し、その動作を説明するための簡単で実用的な例を使用してその応用例を強調しました。