我正在用 C++ 编写一个程序,它从外部文件中读取一些数据以设置静态变量的值。
是否可以将字符串转换为对象标识符?(例如,将字符串“CheckBox::Unchecked”转换为对象 CheckBox::unchecked 的标识符)
我正在用 C++ 编写一个程序,它从外部文件中读取一些数据以设置静态变量的值。
是否可以将字符串转换为对象标识符?(例如,将字符串“CheckBox::Unchecked”转换为对象 CheckBox::unchecked 的标识符)
不,如果你想这样做,你将不得不手动解析字符串并自己完成工作。
不,不是,除非您在程序中定义了映射方法。
但是,您可以创建一个哈希并查找它。
这绝对是可能的。你如何做取决于你期望的输入。例如,如果您知道您将要读取一个复选框字符串,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) )
// ...
如果你不知道你要读什么,那么你就在语法和解析领域。为此,您必须定义语法(何时允许使用“复选框”字符串?)。一旦你写下语法,你就可以编写一个词法分析器和一个解析器。有一些工具可以做到这一点。