Merapatkan Jurang: Menukar Rentetan C kepada Jenis Terbilang
Dalam C , menukar rentetan kepada jenis terhitung (enum) memberikan cabaran yang boleh diselesaikan menggunakan pelbagai teknik. Walaupun pernyataan suis mungkin kelihatan seperti penyelesaian yang mudah, panjangnya boleh menjadi sukar digunakan. Artikel ini meneroka pendekatan alternatif untuk memudahkan penukaran rentetan kepada enum.
Satu kaedah melibatkan penggunaan pemetaan antara rentetan dan enum yang sepadan. Peta standard atau unordered_map boleh digunakan untuk tujuan ini, dengan rentetan sebagai kunci dan enum sebagai nilai. Mengisi peta, walau bagaimanapun, boleh membosankan seperti membuat pernyataan suis.
C 11 to the Rescue
Dengan kemunculan C 11, mengisi peta dengan pasangan rentetan-enum menjadi lebih mudah. Coretan kod berikut menunjukkan kesederhanaan ini:
static std::unordered_map<std::string, E> const table = {{"a",E::a}, {"b",E::b}}; auto it = table.find(str); if (it != table.end()) { return it->second; } else { error() }
Dalam kod ini, pembolehubah jadual mengandungi peta statik yang mengaitkan rentetan dengan enum. Apabila str rentetan yang diberikan dicari dalam peta, nilai enum yang sepadan dikembalikan jika ditemui, atau ralat dilaporkan sebaliknya.
Kesimpulan
Semasa menggunakan peta untuk menukar rentetan kepada enum menawarkan kemudahan, adalah penting untuk ambil perhatian bahawa mengisi peta boleh menjadi lebih kompleks daripada membuat pernyataan suis. Walau bagaimanapun, dengan sintaks C 11 yang dipermudahkan, mengisi peta menjadi tugas yang lebih mudah.
Atas ialah kandungan terperinci Bagaimanakah Anda Boleh Menukar Rentetan C dengan Cekap kepada Jenis Dikira?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!