Menggabungkan Huruf Rentetan: Pandangan Lebih Dekat
Dalam C , pengendali penggabungan " " boleh digunakan untuk menggabungkan rentetan, tetapi terdapat beberapa sekatan apabila bekerja dengan literal rentetan. Mari kita terokai sekatan ini dan fahami semantik di sebaliknya.
Seperti yang dicadangkan oleh petikan daripada Accelerated C, anda tidak boleh secara langsung menggabungkan dua literal rentetan menggunakan " ". Ini kerana literal rentetan disimpan sebagai tatasusunan aksara dan percubaan untuk menggabungkan dua penuding kepada tatasusunan sedemikian akan mengakibatkan tingkah laku yang tidak ditentukan.
Pertimbangkan contoh berikut:
<code class="cpp">const string hello = "Hello"; const string message = hello + ",world" + "!"; // Valid</code>
Dalam kes ini, hello ialah objek rentetan const, yang merupakan salah satu hujah ke paling kiri " ". Hasil penggabungan ini ialah objek rentetan baharu yang mengandungi "Hello,world". Rentetan baharu ini kemudiannya digabungkan dengan "!" untuk menghasilkan mesej akhir.
Walau bagaimanapun, dalam contoh ini:
<code class="cpp">const string exclam = "!"; const string message = "Hello" + ",world" + exclam; // Invalid</code>
ralat penyusunan timbul kerana pengendali " =" mempunyai perkaitan kiri-ke-kanan. Ini bermakna bahawa persamaan dalam kurungan bagi ungkapan itu ialah:
<code class="cpp">const string message = (("Hello" + ",world") + exclam);</code>
Sekarang, "Hello" dan ",world" ialah kedua-dua literal rentetan dan oleh kerana kita tidak boleh menggabungkan dua literal rentetan secara langsung, ungkapan ("Hello " ",world") adalah tidak sah.
Untuk menyelesaikan isu ini, kita boleh memaksa " " kedua untuk dinilai terlebih dahulu dengan menggunakan kurungan:
<code class="cpp">const string message = "Hello" + (",world" + exclam);</code>
Sebagai alternatif, kita boleh mencipta objek rentetan daripada salah satu literal rentetan:
<code class="cpp">const string message = string("Hello") + ",world" + exclam;</code>
Secara umum, salah satu daripada dua rentetan pertama yang digabungkan mestilah objek std::string.
Memahami semantik ini adalah penting apabila bekerja dengan literal rentetan dalam C . Dengan mengikut garis panduan ini, kami boleh menggabungkan rentetan dengan berkesan sambil mengelakkan perangkap biasa yang dikaitkan dengan literal rentetan.
Atas ialah kandungan terperinci Apakah Sekatan untuk Menggabungkan Huruf Rentetan dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!