C++;从字符串到对象标识符的转换 我正在编写一个C++程序,它从外部文件中读取一些数据,以便设置静态变量的值。
是否可以将字符串转换为对象标识符?(例如,将字符串“CheckBox::Unchecked”转换为对象CheckBox::Unchecked的标识符)否。如果要执行此操作,您必须手动解析字符串并自行完成此工作。否,除非您在程序中定义了映射方法C++;从字符串到对象标识符的转换 我正在编写一个C++程序,它从外部文件中读取一些数据,以便设置静态变量的值。,c++,string,identifier,C++,String,Identifier,是否可以将字符串转换为对象标识符?(例如,将字符串“CheckBox::Unchecked”转换为对象CheckBox::Unchecked的标识符)否。如果要执行此操作,您必须手动解析字符串并自行完成此工作。否,除非您在程序中定义了映射方法 但是,您可以创建一个散列并查找它。这绝对是可能的。你如何做到这一点取决于你期望的投入。例如,如果您知道您将要读取一个复选框字符串,那么为checkbox类创建一个操作符>>() std::istream& operator>>(std:
但是,您可以创建一个散列并查找它。这绝对是可能的。你如何做到这一点取决于你期望的投入。例如,如果您知道您将要读取一个复选框字符串,那么为checkbox类创建一个
操作符>>()
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:这是另一个方向。