Memetakan enum kepada rentetan ialah keperluan biasa dalam pembangunan C. Artikel yang disediakan sebelum ini memfokuskan pada isu ini dan membincangkan kemungkinan penyelesaian. Pengarang pada mulanya mencadangkan kaedah mudah menggunakan pernyataan suis tetapi menyatakan kebimbangan tentang sifat seperti C mereka.
Pendekatan alternatif ialah menggunakan std::map
std::map<MyEnum, const char*> MyMap; map_init(MyMap) (eValue1, "A") (eValue2, "B") (eValue3, "C") ;
Kelas map_init memudahkan perangkaian operator(), serupa dengan pengendali<< pada std::ostreams. Kelas menggunakan map_init_helper templat untuk menyediakan antara muka yang mesra untuk menambahkan entri pada mana-mana peta atau struktur seperti peta.
Berikut ialah pelaksanaan kelas map_init dan pembantu:
templatestruct map_init_helper { T& data; map_init_helper(T& d) : data(d) {} map_init_helper& operator() (typename T::key_type const& key, typename T::mapped_type const& value) { data[key] = value; return *this; } }; template map_init_helper map_init(T& item) { return map_init_helper (item); } Artikel juga menyebut boost::assign sebagai perpustakaan sedia ada yang menyediakan kefungsian yang serupa. Dengan menggunakan peta atau kelas map-init, pembangun boleh menukar nilai enum dengan mudah kepada rentetan yang sepadan untuk kebolehbacaan dan kebolehgunaan yang lebih baik.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menukar C Enum dengan Cekap kepada Rentetan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!