0

「\n」や「\a」と同じスタイルの文字列リテラル内に特定の信号を埋め込みたい。私のプログラムは文字列を見て、エスケープ文字を見て、それに続く文字に応じて動作します。

ただし、問題は、C ++がコンパイルプロセスの一部として、エスケープ文字として「\」を使用してすべてを解決することです。また、私がよく使うC標準ライブラリでは、エスケープ文字として「%」も使用しています。

したがって、「\」と「%」の両方を使用することはできません。スラッシュ「/」は「\」に似すぎており、現時点では、他のほとんどの文字があまりにも一般的に使用されているか、エスケープのように見えません。

私の質問は、エスケープ文字として使用するのに最適な文字は何ですか。それは、独自のエスケープ文字に依存する一般的なC++文字列ユーティリティと衝突しません。この意味での「ベスト」とは、通常の会話や数学ではあまり使用されないキャラクターを客観的に表現し、一目で逃げ道として簡単に識別できるものです。

4

4 に答える 4

4

バックスラッシュをエスケープできない理由はありません(例\\n)。入力するのが醜い場合は、C++11の生の文字列リテラルを試してください。

R"(hello\nfriend\a\b\c\d)"

括弧は文字列の一部ではないことに注意してください。文字列に含まれる)"場合は、開始括弧の前に独自の区切り文字を配置できます。これは、終了括弧の後に続く必要があります。

R"delim(hello\nfriend\a\b)"something)delim"
于 2013-01-20T22:17:38.827 に答える
1

私のお気に入りの代替エスケープ文字は`(バックティック)です。なんで?通常のテキストでは頻繁に発生しないため、CおよびC ++はまったく使用せず、小さな円記号のように見えます。

于 2013-01-20T22:20:20.510 に答える
0

bashは$、変数を文字列に挿入するために使用します。

"Hello $name! How are you?"

Windows cmdは同じように%を使用します:

"Hello %name%! How are you?

C#は{}文字列のフォーマットに使用します:

String.Format("Hello {0}! How are you?", name)

それらのどれもが容易に認識できるでしょう。

于 2013-01-20T22:18:23.083 に答える
0

文字列に2文字で保存する限り、通常は「\」を使用できると思います。たとえば、「\n」ではなく「\」と「n」です。

于 2013-01-20T22:14:39.603 に答える