c ++从文件中读取get struct enum值

时间:2015-07-07 14:21:32

标签: c++

enum Person {Person1Name, Person2Name, Person3Name};

struct MyInfo
{
  Person person ;
}

让这个人输入他的名字" John"和我     infile>> (我应该在这里写什么来读取他的名字的用户类型并与枚举Person2Name相关联);

2 个答案:

答案 0 :(得分:0)

很难真正理解你的需要,但是读取字符串并将它们转换为枚举值可以通过显式ifs来完成

std::map<std::string, Person> map;
map["John"] = Person2Name;
in >> name;
info.person = map[name]; // UGLY! not checking if name is in map (use std::map::find in real code)

或一些地图

{{1}}

将所有可用名称硬编码为代码中的枚举仍然很奇怪。

答案 1 :(得分:0)

在C ++中,枚举只能隐式转换为writeObject类型;将intconst char*类型与&#34; John&#34;相关联是没有意义的。此外,枚举类型应该表示预定义值的集合,而不是运行时值,如下所示:

std::string

或使用C ++ 11:

enum Colors { BLUE, RED, GREEN };

你的类应该持有一个std :: string类型变量来存储从文件中读取的名称,因为它更直观地使名称成为std :: string类型而不是预定义的值。

如果我们可以假设您的文件如此:

enum class Colors { BLUE, RED, GREEN };

你可以写这样的代码:

John
Mary
Joseph
Karen