c++字符串转换为枚举类型

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++字符串转换为枚举类型相关的知识,希望对你有一定的参考价值。

#include <iostream.h>
enum set a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;

void string2enum(char* string , enum set em)



void main()

char str[256];
set temp;
cin>>str;
string2enum(str,temp);
switch(w)

case a:
cout<<'a'<<endl;break;
case b:
cout<<'b'<<endl;break;
case c:
cout<<'c'<<endl;break;
case d:
cout<<'d'<<endl;break;
case e:
cout<<'e'<<endl;break;
case f:
cout<<'f'<<endl;break;



如何实现string2enum()函数 越简单越好,效率越高越好,求助!!!

你是想从屏幕里输入一个字符,然后将这个字符转换为对应的枚举吧。如:从屏幕上输入'a',则转换为set枚举中对应的a,如果是这个意思,我已经帮你实现了,源代码如下(见注释,不明白的地方可以hi我):

#include <iostream>
using namespace std;
enum set a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z;
void char2enum(char ch , set &em)
// 实现字符转枚举,其中参数em为set的引用类型,来把ch转换的结果传出
char start = 'a';
em = (set)((int)ch - (int)start);

void main()

char str;
set temp;
cout << "please input a char: ";
cin>>str; // 获取从屏幕中输入的字符
char2enum(str, temp); // 将字符str转换为枚举temp
switch(temp) // 根据枚举的值,进行输出

case a:
cout<<'a'<<endl;break;
case b:
cout<<'b'<<endl;break;
case c:
cout<<'c'<<endl;break;
case d:
cout<<'d'<<endl;break;
case e:
cout<<'e'<<endl;break;
case f:
cout<<'f'<<endl;break;
// case g:... 你自己去添加这些代码吧
// case h:...



测试结果:
please input a char:
a 回车
a // 为输出内容
参考技术A 枚举类型如下:
public enum ConcertCode

BEIJING,
SHANGHAI,
GUANGZHOU
如果要将比如“beijing”字符串转换为ConcertCode.BEIJING的话,可以通过如下方法:
ConcertCode c = (ConcertCode)Enum.Parse(typeof(ConcertCode), 字符串的变量, true)

C++枚举变量与switch

枚举类型和变量如何定义,下篇博客讲得十分详细:

https://blog.csdn.net/bruce_0712/article/details/54984371

 

有几个需要注意的点:

(1)在不进行强制类型转换的前提下,枚举量只能由枚举类型赋值。但是,可以把枚举量赋给其它类型(枚举量被强制转换为整型)。

(2)枚举量没有赋初值的话,会自动从0开始,按从小到大的顺序,以整数的形式初始化。

enum enumType Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday;

Monday~Sunday 会默认为0~6。将其中某个赋初值的话,下一个枚举量也会自动向上递增。

(3)枚举类型常和switch分支搭配使用。

 

自己简单练习了一下。用户输入0-5的数字来选择工作日,输出当天的安排。

#include<iostream>
using namespace std;

typedef enum workday

	Sunday = 0,
	Monday = 1,
	Tuesday = 2,
	Wednesday = 3,
	Thursday = 4,
	Friday = 5,
;

void chooseday(workday tempday);

int main()

	int today;
	cin >> today;

	chooseday(workday(today));

	system("pause");



void chooseday(workday tempday)

	switch (tempday)
	
	case Sunday:
	
		cout << "Work,and go shopping." << endl;
		break;
	
	case Monday:
	
		cout << "Work,and read books." << endl;
		break;
	
	case Tuesday:
	
		cout << "Travel." << endl;
		break;
	
	case Thursday:
	
		cout << "Work,and visit friends." << endl;
		break;
	
	case Friday:
	
		cout << "Have a party." << endl;
		break;
	
	default:
		cout << "Wrong input!" << endl;
		break;
	

  

以上是关于c++字符串转换为枚举类型的主要内容,如果未能解决你的问题,请参考以下文章

有没有一种简单的方法可以将 C++ 枚举转换为字符串?

java如何用方法toString()将枚举类型转换为字符串类型

C#如何将枚举类(enum)型转换成字符(string)类型

C#如何将枚举类(enum)型转换成字符(string)类型

C++枚举与字符串转换工具类

C++枚举与字符串转换工具类