Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Menukar C Enum dengan Cekap kepada Rentetan?

Bagaimanakah Saya Boleh Menukar C Enum dengan Cekap kepada Rentetan?

DDD
Lepaskan: 2025-01-06 00:53:41
asal
756 orang telah melayarinya

How Can I Efficiently Convert C   Enums to Strings?

Menukar C Enum kepada Rentetan: Meneroka Penyelesaian

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 untuk mengaitkan nilai enum dengan perwakilan rentetan. Untuk meningkatkan sintaks, pengarang memperkenalkan kelas map_init, yang membolehkan penambahan entri yang elegan pada peta:

std::map<MyEnum, const char*> MyMap;
map_init(MyMap)
    (eValue1, "A")
    (eValue2, "B")
    (eValue3, "C")
;
Salin selepas log masuk

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:

template struct 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!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan