我正在用C ++编写一个程序,它从外部文件中读取一些数据,以便设置静态变量的值。
是否可以将字符串转换为对象标识符? (例如,将字符串“CheckBox :: Unchecked”转换为对象CheckBox :: unchecked的标识符)
答案 0 :(得分:2)
没有。如果你想这样做,你必须手动解析字符串并自己完成工作。
答案 1 :(得分:1)
不,它不是,除非您在程序中定义了映射方法。
然而,你可以创建一个哈希并查看它。
答案 2 :(得分:1)
这绝对有可能。你如何做到这取决于你期望的输入。例如,如果您知道,您将要阅读复选框字符串,请为复选框类创建operator>>()
。
std::istream& operator>>(std::istream& in, CheckBox& cb)
{
std::string input_str;
in >> input_str;
if( str == "CheckBox::unchecked" ) cb.set_value(false);
else if( str == "CheckBox::checked" ) cb.set_value(true);
else in.setstate(ios::badbit);
return in;
}
// ...
CheckBox b;
if( !( cin >> b) )
// ...
如果您不知道自己要阅读的内容,那么您将进入语法和解析域。为此,您必须定义语法(何时允许“复选框”字符串?)。一旦你写下了语法,你就写了一个词法分析器和一个解析器。有工具可供选择。