1. ホーム
  2. c++

[解決済み] C++文字列リテラルのエスケープ文字に関する規則

2022-03-04 07:27:43

質問事項

エスケープ文字のルールを教えてください。 \ を文字列リテラルで使用できますか?エスケープされるすべての文字の一覧はありますか?

特に \ の文字列リテラルに、任意の3つの数字を続けて入力すると、それぞれ異なる色で表示されます。

を作ろうとしていたのですが std::string という文字を持つリテラルから構成されています。 0 に続き、ヌル文字( \0 ) の後に、文字 0 . しかし、シンタックスハイライトは、もしかしたらこれは、文字 0 に続き、ヌル文字 ( \00 は、別名 \0 )、つまり2文字だけである。

この問題だけを解決するためには、この方法がベストなのでしょうか。

std::string ("0\0" "0", 3)  // String concatenation 

また、一般的に文字列リテラルでエスケープ文字が何をするのか、何らかのリファレンスがあるのでしょうか?例えば'˶'˶'とは何ですか?

どのように解決するのですか?

制御文字

(16進数コードはASCII互換の文字エンコーディングを前提としています)

  • \a = \x07 = アラート(ベル)
  • \b = \x08 = バックスペース
  • \t = \x09 = 水平タブ
  • \n = \x0A = ニューライン(またはラインフィード)
  • \v = \x0B = 垂直タブ
  • \f = \x0C = フォームフィード
  • \r = \x0D = キャリッジリターン
  • \e = \x1B = エスケープ (非標準の GCC 拡張)

句読点文字。

  • \" = にはバックスラッシュは不要です。 '"' )
  • \' = アポストロフィ (バックスラッシュは "'" )
  • \? = クエスチョンマーク(三文 字を避けるために使用)
  • \\ = バックスラッシュ

数値文字参照。

  • \ + 最大3桁の8進数
  • \x +任意の数の16進数
  • \u + 4桁の16進数(Unicode BMP、C++11の新機能)
  • \U + 8個の16進数(Unicodeのアストラル平面、C++11の新機能)

\0 = \00 = \000 = ヌル文字に対応する8進数のエスケープ

の後に実際の数字文字が必要な場合。 \0 ということであれば、文字列連結をお勧めします。 なお、リテラルの各パートの間の空白は任意なので、以下のように書くことができます。 "\0""0" .