C++에서 열거 형을 문자열로 변환하는 방법
이 기사에서는 C++에서 열거 형을 문자열 변수로 변환하는 몇 가지 방법을 설명합니다.
const char *
배열을 사용하여 C++에서 열거 형을 문자열로 변환
enum
은 내장형으로, 일반적으로 배열로 형성된 작은 이름의 정수를 선언하는 데 사용할 수 있습니다. 이 메커니즘은 정수 값 세트를 표시하는 오류 발생 가능성이 적고 읽기 쉬운 방법을 제공합니다.
열거 형 요소는 위치 값 (예 : Banana
의 예제 코드에서 0
이 있음) 또는 명시 적 값 ( enum Fruit {Banana = 34, ...}
로 선언 됨)을 가질 수 있습니다.
이 예는enum
요소의 암시 적 값을 사용하여 배열에서 해당 문자열 값에 액세스하는 방법을 보여줍니다. 실제 시나리오를 더 잘 보여주기 위해main
함수의 시작 부분에서 1-4 범위의 값으로 임의의input
변수를 초기화합니다.
#include <chrono>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
enum Fruit { Banana, Coconut, Mango, Carambola, Total };
static const char *enum_str[] = {"Banana Pie", "Coconut Tart", "Mango Cookie",
"Carambola Crumble"};
int main() {
std::srand(std::time(nullptr));
int random = rand() % Total;
auto input = static_cast<Fruit>(random);
switch (input) {
case Banana:
cout << enum_str[Banana] << endl;
break;
case Coconut:
cout << enum_str[Coconut] << endl;
break;
case Mango:
cout << enum_str[Mango] << endl;
break;
case Carambola:
cout << enum_str[Carambola] << endl;
break;
case Total:
cout << "Incorrect ingredient!" << endl;
break;
}
return EXIT_SUCCESS;
}
출력:
Banana Pie
사용자 정의 함수를 사용하여 C++에서 열거 형을 문자열로 변환
또는 정수를 매개 변수로 사용하고 문자열 값을 반환하는 자체 함수를 정의 할 수 있습니다. 문자열 변수는 함수 내에서enum_str
배열의const char*
값으로 초기화됩니다. Total
값을getStringForEnum
함수에 인수로 전달하면enum_str
배열에 4 개의 요소 만 있으므로 일부 가비지 값을 반환합니다.
#include <chrono>
#include <iostream>
#include <string>
using std::cin;
using std::cout;
using std::endl;
using std::string;
enum Fruit { Banana, Coconut, Mango, Carambola, Total };
static const char *enum_str[] = {"Banana Pie", "Coconut Tart", "Mango Cookie",
"Carambola Crumble"};
string getStringForEnum(int enum_val) {
string tmp(enum_str[enum_val]);
return tmp;
}
int main() {
string todays_dish = getStringForEnum(Banana);
cout << todays_dish << endl;
return EXIT_SUCCESS;
}
출력:
Banana Pie
위의enum
유형에Total
요소를 포함하면 실용적인 용도로 사용할 수 있습니다. 한 가지 예로, 다음 샘플 코드와 같이 루프 매개 변수로 사용할 수있는 열거 형 요소의 수를 나타냅니다. 첫 번째 루프는enum_str
배열에서 모든 문자열을 추출하여enum_strigs
벡터 변수로 푸시합니다. 두 번째 반복은enum_strigs
의 내용을 콘솔에 출력합니다.
#include <chrono>
#include <iostream>
#include <string>
#include <vector>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;
enum Fruit { Banana, Coconut, Mango, Carambola, Total };
static const char *enum_str[] = {"Banana Pie", "Coconut Tart", "Mango Cookie",
"Carambola Crumble"};
string getStringForEnum(int enum_val) {
string tmp(enum_str[enum_val]);
return tmp;
}
int main() {
vector<string> enum_strigs{};
enum_strigs.reserve(Total);
for (int i = 0; i < Total; ++i) {
enum_strigs.push_back(getStringForEnum(i));
}
for (const auto &item : enum_strigs) {
cout << item << endl;
}
return EXIT_SUCCESS;
}
출력:
Banana Pie
Coconut Tart
Mango Cookie
Carambola Crumble
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook