KoenigによるAccelerated C ++を読んでいます。彼は、「新しい考え方は、+を使用して文字列と文字列リテラルを連結できる、つまり、2つの文字列(2つの文字列リテラルではない)を連結できるということです。
結構、これは私が思うに理にかなっています。次に、これを明らかにするための2つの個別の演習に移ります。
次の定義は有効ですか?
const string hello = "Hello";
const string message = hello + ",world" + "!";
今、私は上記を実行しようとしましたが、うまくいきました!嬉しかったです。
それから私は次の練習をしようとしました。
const string exclam = "!";
const string message = "Hello" + ",world" + exclam;
これは機能しませんでした。これで、2つの文字列リテラルを連結できないという事実と関係があることを理解していますが、なぜ最初の例を機能させたのか( "、world"と "!"ではない)の意味上の違いは理解できません。 "2つの文字列リテラル?これはうまくいかなかったのではないでしょうか?)しかし2つ目はうまくいきませんでした。
"Hello" + ", world!"
できるとき、なぜだれもが書くでしょう"Hello, world!"
。いつものように、C ++には知覚された問題に対する素晴らしくシンプルな回避策があります。:-)
"Hello" ", world!"
(なしで+
)書く可能性が高くなります。C ++については多くの不満がありますが、ここでの処理はその1つだとは思いません。それはあなたが書いたかのようにまったく同じ1 / 3 + 1.5
であり、部門は積分部門だったので不平を言いました。良くも悪くも、これはほとんどの言語が機能する方法です。
"hello" " world" == "hello world"
は、長い文字列を記述する必要があり、それがウィンドウの外に出たくない場合、または行の長さの制限内に収まるようにする場合に便利です。または、文字列の1つがマクロで定義されている場合。
const string message = "Hello" ",world" + exclam
(例:最初のものを省略+
)shoudは問題なく動作します。