Saya membaca Accelerated C ++ oleh Koenig. Dia menulis bahwa "ide barunya adalah kita dapat menggunakan + untuk menggabungkan string dan string literal - atau, dalam hal ini, dua string (tapi bukan dua string literal).
Baiklah, kurasa ini masuk akal. Sekarang ke dua latihan terpisah yang dimaksudkan untuk menerangi ini.
Apakah definisi berikut ini valid?
const string hello = "Hello";
const string message = hello + ",world" + "!";
Sekarang, saya mencoba menjalankan yang di atas dan berhasil! Jadi saya senang.
Kemudian saya mencoba melakukan latihan berikutnya;
const string exclam = "!";
const string message = "Hello" + ",world" + exclam;
Ini tidak berhasil. Sekarang saya mengerti itu ada hubungannya dengan fakta bahwa Anda tidak dapat menggabungkan dua string literal, tetapi saya tidak mengerti perbedaan semantik antara mengapa saya berhasil mendapatkan contoh pertama untuk bekerja (bukan ", dunia" dan "! "dua string literal? Bukankah seharusnya ini tidak berhasil?) tapi tidak yang kedua.
"Hello" + ", world!"
ketika Anda bisa melakukannya "Hello, world!"
. Seperti biasa C ++ memiliki solusi yang luar biasa dan sederhana untuk masalah yang dirasakan. :-)
"Hello" ", world!"
(tanpa +
). Ada sejumlah keluhan yang bisa dibuat tentang C ++, tapi menurut saya penanganannya di sini bukan salah satunya. Persis sama seperti jika Anda menulis 1 / 3 + 1.5
, dan mengeluh karena divisi itu adalah divisi integral. Baik atau buruk, inilah cara kebanyakan bahasa bekerja.
"hello" " world" == "hello world"
ini berguna jika Anda harus menulis string yang panjang dan tidak ingin keluar dari jendela Anda atau Anda ingin berada dalam penyempitan panjang baris. Atau jika salah satu string ditentukan dalam makro.
const string message = "Hello" ",world" + exclam
(misalnya menghilangkan yang pertama+
) harus bekerja dengan baik.