Menggabungkan Huruf Rentetan
Dalam Accelerated C , Koenig memperkenalkan keupayaan untuk menggabungkan rentetan menggunakan operator " ". Walaupun ini berfungsi dengan gabungan rentetan dan literal rentetan, ia menimbulkan persoalan apabila cuba menggabungkan berbilang literal rentetan.
Memahami Isu
Pertimbangkan contoh berikut:
const string hello = "Hello"; const string message = hello + ",world" + "!";
Kod ini berjaya dilaksanakan, walaupun terdapat ",world" dan "!" sebagai literal rentetan. Walau bagaimanapun, percubaan serupa gagal dengan perkara berikut:
const string exclam = "!"; const string message = "Hello" + ",world" + exclam;
Faktor Associativity
Perbezaannya terletak pada associativity operator " ". Ia menilai dari kiri ke kanan, bermaksud:
(hello + ",world") + "!"
Dalam kes pertama, "hello" digabungkan dengan ",world," menghasilkan objek rentetan. Objek ini kemudiannya digabungkan dengan "!".
Dalam kes kedua, "Hello" dan ",world" tidak boleh digabungkan secara langsung kerana sekatan terhadap penggabungan dua literal rentetan. Ini mengakibatkan ralat pengkompil.
Penyelesaian Kemungkinan
Untuk menyelesaikan isu, seseorang boleh sama ada memastikan bahawa dua operan pertama kepada " " ialah objek rentetan atau memaksa tertib penilaian menggunakan kurungan:
Pilihan 1: Objek Rentetan sebagai Operan Pertama
const string message = string("Hello") + ",world" + exclam;
Pilihan 2: Tanda kurung
const string message = "Hello" + (",world" + exclam);
Mengapa Huruf Rentetan Tidak Boleh Disatukan Secara Terus
Tersurat rentetan ialah tatasusunan aksara dan apabila digunakan dalam ungkapan, ia menukar kepada penunjuk kepada elemen awalnya. Percubaan untuk menambah dua huruf rentetan adalah bersamaan dengan menambah dua penunjuk, yang tidak sah.
Alternatif untuk Menggabungkan Huruf Rentetan
Tersurat rentetan boleh digabungkan hanya dengan meletakkannya bersebelahan antara satu sama lain:
"Hello" ",world"
Ini bersamaan dengan:
"Hello,world"
Walau bagaimanapun, pendekatan ini hanya berfungsi dengan literal rentetan dan bukan dengan objek rentetan atau tatasusunan aksara.
Atas ialah kandungan terperinci Apabila Menggabungkan Huruf Rentetan dengan \' \' dalam C , Mengapa Mereka Tidak Boleh Disambung Secara Terus?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!