Rumah > pembangunan bahagian belakang > C++ > Bagaimana dengan Cekap Menukar Rentetan kepada Enum dalam C?

Bagaimana dengan Cekap Menukar Rentetan kepada Enum dalam C?

Patricia Arquette
Lepaskan: 2024-11-11 01:55:02
asal
581 orang telah melayarinya

How to Efficiently Convert Strings to Enums in C  ?

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 atau std::unordered_map. Mengisi peta dengan pasangan nilai kunci rentetan dan nilai enum adalah mudah, membolehkan carian pantas. Walau bagaimanapun, kaedah ini berkongsi kerumitan pernyataan suis.

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} };
Salin selepas log masuk

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 };
Salin selepas log masuk

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;
  // ...
}
Salin selepas log masuk

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!

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