我正在用C++编写一个程序,该程序从外部文件中读取一些数据以设置静态变量的值。从字符串到对象标识符的C++转换
是否可以将字符串转换为对象标识符? (例如,将字符串“CheckBox :: Unchecked”转换为对象CheckBox :: unchecked的标识符)
我正在用C++编写一个程序,该程序从外部文件中读取一些数据以设置静态变量的值。从字符串到对象标识符的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))
// ...
如果你不知道你要读什么,那么你在语法和解析领域。为此,您必须定义您的语法(什么时候允许“复选框”字符串?)。一旦你写下语法,你就可以编写一个词法分析器和一个解析器。有这方面的工具。
@Ciro:这是另一个方向。 – 2017-01-01 23:31:33