Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Memetakan C Enum dengan Mudah kepada Rentetan Menggunakan Templat?

Bagaimanakah Saya Boleh Memetakan C Enum dengan Mudah kepada Rentetan Menggunakan Templat?

Barbara Streisand
Lepaskan: 2024-12-08 03:27:09
asal
567 orang telah melayarinya

How Can I Easily Map C   Enums to Strings Using Templates?

Cara Mudah Memetakan Enum C kepada Rentetan

Latar Belakang:

Anda mempunyai jenis enum yang ditakrifkan dalam pengepala perpustakaan luaran dan ingin menukar nilai enum kepada rentetan yang boleh dibaca manusia. Penyelesaian brute-force melibatkan fungsi yang ditakrifkan secara manual, tetapi penyelesaian yang elegan dicari menggunakan templat.

Menggunakan std::map:

Pendekatan mudah ialah menggunakan std::map untuk mengaitkan nilai enum dengan literal rentetan.

Syntactic Sugar dengan map_init class:

Untuk memudahkan sintaks, kelas map_init boleh dibuat untuk membolehkan rantaian tugasan nilai:

map_init(MyMap)(eValue1, "A")
    (eValue2, "B")
    (eValue3, "C");
Salin selepas log masuk

Templat kelas ini mengembalikan objek map_init_helper yang menyimpan merujuk kepada peta dan menyediakan fungsi operator() untuk menambah pasangan nilai kunci.

Contoh Penggunaan:

Untuk menggunakan pendekatan ini, anda boleh:

  1. Buat peta menggunakan std::map MyMap;.
  2. Mulakan peta dengan map_init(MyMap) diikuti dengan panggilan operator() berantai.
  3. Dapatkan semula perwakilan rentetan nilai enum menggunakan getStringValue(enumValue).

Alternatif Pendekatan:

Jika nama enum itu sendiri harus digunakan sebagai rentetan, rujuk [siaran ini](pautan ke siaran yang berkaitan).

Ringkasan:

Penyelesaian ini menyediakan cara yang mudah dan cekap untuk memetakan C enum kepada rentetan, menawarkan alternatif yang lebih elegan kepada kaedah kekerasan. Kelas map_init memudahkan lagi sintaks, menjadikannya lebih mudah untuk bekerja dengan peta nilai enum dan perwakilan rentetannya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Memetakan C Enum dengan Mudah kepada Rentetan Menggunakan Templat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan