Walaupun penggunaan kenyataan suis secara meluas untuk mengendalikan kes yang berbeza dalam kod, sekatan yang pelik muncul apabila cuba untuk menggunakan mereka dengan rentetan. Menyusun kod yang menggunakan rentetan dalam ungkapan suis, seperti yang ditunjukkan di bawah, mencetuskan ralat "jenis haram":
int main() { switch(std::string("raj")) { case "sda": } }
Ketidakserasian ini menimbulkan persoalan: mengapa pernyataan suis tidak boleh digunakan pada rentetan dalam C /C ?
Di tengah-tengah had ini terletak sifat asas sistem jenis dalam C/C . Tidak seperti kebanyakan bahasa lain yang menyokong rentetan secara asli, C/C tidak mengiktiraf rentetan sebagai jenis yang berbeza. Sebaliknya, ia berfungsi terutamanya dengan tatasusunan aksara, juga dikenali sebagai tatasusunan aksara malar. Pendekatan ini berpunca daripada reka bentuk semula jadi bahasa, yang mengutamakan kecekapan dan kawalan tahap rendah ke atas keselamatan dan kemudahan jenis.
Perbandingan rentetan dalam C/C merumitkan lagi perkara. Pengkompil tidak mempunyai pemahaman yang wujud tentang rentetan yang dimiliki oleh bahasa yang direka untuk manipulasi rentetan. Ia tidak dapat menentukan sama ada untuk melakukan perbandingan yang sensitif huruf besar, tidak sensitif huruf atau huruf yang sedar budaya. Kekaburan ini menjadikannya mencabar untuk menjana kod yang boleh dipercayai dan dioptimumkan untuk pernyataan suis yang melibatkan rentetan.
Selain itu, pelaksanaan pernyataan suis dalam C/C biasanya melibatkan penciptaan jadual cawangan. Menjana jadual sedemikian menjadi jauh lebih kompleks apabila berurusan dengan rentetan. Pengkompil mesti mempertimbangkan kemungkinan variasi dalam panjang rentetan dan memastikan bahawa setiap kes dikendalikan dengan cekap dan betul.
Walaupun penggunaan terus rentetan dalam pernyataan suis mungkin tidak boleh dilakukan dalam C/C , terdapat pendekatan alternatif yang menyediakan fungsi yang serupa. Satu teknik biasa ialah membuat pemetaan daripada rentetan kepada nilai atau tindakan tertentu. Pemetaan ini boleh dilaksanakan menggunakan jadual cincang atau struktur data yang serupa, membolehkan pengendalian yang cekap dan konsisten bagi kes berasaskan rentetan yang berbeza.
Atas ialah kandungan terperinci Mengapa Penyata Suis C/C Tidak Boleh Mengendalikan Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!