Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Anda Boleh Menukar Rentetan C dengan Cekap kepada Jenis Dikira?

Bagaimanakah Anda Boleh Menukar Rentetan C dengan Cekap kepada Jenis Dikira?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-25 11:28:24441semak imbas

How Can You Efficiently Convert C   Strings to Enumerated Types?

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!

Kenyataan:
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