如何从流输入到枚举类型?
我可以这样
unsigned int sex = 0;
stream >> sex;
student.m_bio.sex = static_cast<Sex>(sex);
除此以外?
最佳答案
inline std::istream & operator>>(std::istream & str, Sex & v) {
unsigned int sex = 0;
if (str >> sex)
v = static_cast<Sex>(sex);
return str;
}
如果要确保该值有效,则可以执行以下操作:
enum Sex {
Male,
Female,
Sex_COUNT
};
inline std::istream & operator>>(std::istream & str, Sex & v) {
unsigned int sex = 0;
if (!(str >> sex))
return str;
if (sex >= Sex_COUNT) {
str.setstate(str.rdstate() | std::ios::failbit);
return str;
}
v = static_cast<Sex>(sex);
return str;
}
关于c++ - 从流输入到枚举类型,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5633784/