2010-05-15 102 views
3

我正在用C++编写一个程序,该程序从外部文件中读取一些数据以设置静态变量的值。从字符串到对象标识符的C++转换

是否可以将字符串转换为对象标识符? (例如,将字符串“CheckBox :: Unchecked”转换为对象CheckBox :: unchecked的标识符)

+1

@Ciro:这是另一个方向。 – 2017-01-01 23:31:33

回答

2

不可以。如果您想这样做,您必须手动解析字符串并自己完成工作。

1

不,它不是,除非你的程序中定义了映射方法。

但是,您可以创建一个散列并查看它。

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)) 
    // ... 

如果你不知道你要读什么,那么你在语法和解析领域。为此,您必须定义您的语法(什么时候允许“复选框”字符串?)。一旦你写下语法,你就可以编写一个词法分析器和一个解析器。有这方面的工具。