Koenig'in Accelerated C ++ programını okuyorum. "Yeni fikir, bir dizeyi ve bir dizgeyi bir araya getirmek için + kullanabileceğimizi - veya bu konuda iki dizgiyi (ancak iki dizge değişmezi değil) yazıyor.
Güzel, sanırım bu mantıklı. Şimdi bunu aydınlatmak için iki ayrı alıştırmaya geçelim.
Aşağıdaki tanımlar geçerli mi?
const string hello = "Hello";
const string message = hello + ",world" + "!";
Şimdi, yukarıdakileri uygulamaya çalıştım ve işe yaradı! Bu yüzden mutluydum.
Sonra bir sonraki alıştırmayı yapmaya çalıştım;
const string exclam = "!";
const string message = "Hello" + ",world" + exclam;
Bu işe yaramadı. Şimdi anlıyorum ki, iki dizeli değişmezi birleştiremeyeceğiniz gerçeğiyle bir ilgisi var, ancak neden işe yarayan ilk örneği elde etmeyi başardığım arasındaki anlamsal farkı anlamıyorum (", dünya" ve "değil! "iki dize değişmezi? Bu işe yaramamalı mıydı?) ama ikincisi değil.
"Hello" + ", world!"
zaman neden kimse yazsın "Hello, world!"
? Her zamanki gibi C ++, algılanan bir sorun için harika ve basit bir çözüm sunar. :-)
"Hello" ", world!"
(olmadan +
) yazma olasılığınız daha yüksektir . C ++ hakkında yapılabilecek bir dizi şikayet var, ancak burada ele alınmasının onlardan biri olduğunu sanmıyorum. Yazdığın 1 / 3 + 1.5
ve şikayet ettiğinle tamamen aynı şey çünkü bölüm ayrılmaz bir bölümdü. İyi ya da kötü, çoğu dilin çalışma şekli budur.
"hello" " world" == "hello world"
, uzun bir dizge yazmanız gerekiyorsa ve onun pencerenizden çıkmasını istemiyorsanız veya bir satır uzunluğu kısıtlaması içinde olmak istiyorsanız kullanışlıdır. Veya dizelerden biri bir makroda tanımlanmışsa.
const string message = "Hello" ",world" + exclam
(örneğin ilkini atlamak+
) gayet iyi çalışıyor.