Rumah > pembangunan bahagian belakang > C++ > Mengapa Penggabungan Rentetan Menggunakan Gagal dengan Literal Rentetan?

Mengapa Penggabungan Rentetan Menggunakan Gagal dengan Literal Rentetan?

Susan Sarandon
Lepaskan: 2024-10-24 08:32:30
asal
779 orang telah melayarinya

Why Did String Concatenation Using   Fail with String Literals?

Menggabungkan Huruf Rentetan dengan Rentetan

Dalam C , pengendali boleh digunakan untuk menggabungkan rentetan dan literal rentetan. Walau bagaimanapun, terdapat pengehadan pada fungsi ini yang boleh menyebabkan kekeliruan.

Dalam soalan itu, pengarang cuba menggabungkan rentetan literal "Hello", ",world", dan "!" dalam dua cara yang berbeza. Contoh pertama:

<code class="cpp">const string hello = "Hello";
const string message = hello + ",world" + "!";</code>
Salin selepas log masuk

Dalam kes ini, kod disusun dan berjalan dengan jayanya. Ini kerana operan pertama kepada operator ialah objek rentetan (hello), jadi pengkompil menganggap ini sebagai gabungan rentetan dan dua literal rentetan.

Walau bagaimanapun, contoh kedua:

<code class="cpp">const string exclam = "!";
const string message = "Hello" + ",world" + exclam;</code>
Salin selepas log masuk

gagal disusun. Ini kerana pengendali paling kiri cuba menggabungkan dua literal rentetan, yang tidak dibenarkan. Pengkompil mentafsirkan kod ini sebagai:

<code class="cpp">const string message = (("Hello" + ",world") + exclam);</code>
Salin selepas log masuk

dan gabungan pertama cuba menambah dua penunjuk (const char* literals) bersama-sama.

Untuk menyelesaikan isu ini, kod tersebut hendaklah sama ada:

  • Jadikan satu daripada dua rentetan pertama yang disatukan sebagai objek rentetan:

    <code class="cpp">const string message = string("Hello") + ",world" + exclam;</code>
    Salin selepas log masuk
  • Gunakan kurungan untuk memaksa yang kedua dinilai dahulu :

    <code class="cpp">const string message = "Hello" + (",world" + exclam);</code>
    Salin selepas log masuk

Sebab anda tidak boleh menggabungkan dua literal rentetan menggunakan adalah kerana literal rentetan disimpan sebagai tatasusunan aksara, yang tidak boleh ditambah secara langsung. Apabila anda menggunakan rentetan literal dalam kebanyakan konteks, ia ditukar kepada penuding kepada elemen awalnya, yang bukan operan yang sah untuk pengendali.

Oleh itu, adalah penting untuk diingat bahawa hanya satu daripada dua operan paling kiri dalam ungkapan gabungan boleh menjadi rentetan literal. Walau bagaimanapun, literal rentetan boleh digabungkan dengan meletakkannya bersebelahan antara satu sama lain, seperti dalam:

<code class="cpp">"Hello" ",world"
"Hello,world"</code>
Salin selepas log masuk

Atas ialah kandungan terperinci Mengapa Penggabungan Rentetan Menggunakan Gagal dengan Literal Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan