Penukaran Rentetan yang Cekap kepada Enum dalam C
Apabila bekerja dengan enum dalam C , anda mungkin menghadapi keperluan untuk menukar rentetan kepada rentetan yang sepadan dengannya nilai enum. Walaupun pernyataan suis boleh mencukupi, ia boleh menjadi rumit dengan banyak nilai enum. Artikel ini meneroka pendekatan alternatif untuk penukaran rentetan-ke-enum yang cekap.
std::map Solution
Satu pendekatan ialah mencipta std::map
C 11 Syntactic Sugar
Untuk C 11 dan kemudian, penyelesaian yang lebih ringkas tersedia. Menggunakan std::unordered_map yang dimulakan secara statik, anda boleh mengisi peta secara elegan menggunakan pendakap kerinting:
static std::unordered_map<std::string,E> const table = { {"a",E::a}, {"b",E::b} };
Untuk melakukan carian, hanya gunakan kaedah find() pada jadual dan semak sama ada lelaran itu sah. Jika ditemui, anda boleh mendapatkan nilai enum yang sepadan secara langsung.
Contoh
Sebagai contoh, pertimbangkan pengisytiharan enum berikut:
enum class E { a, b, c };
Dan rentetan "a", anda boleh menukarnya kepada nilai enum yang sepadan menggunakan jadual:
auto it = table.find("a"); if (it != table.end()) { E result = it->second; // ... }
Pendekatan ini menyediakan penyelesaian yang ringkas dan cekap untuk menukar rentetan kepada enum dalam C , mengurangkan kerumitan pernyataan suis panjang.
Atas ialah kandungan terperinci Bagaimana dengan Cekap Menukar Rentetan kepada Enum dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!