C ++从字符串转换为对象标识符

时间:2010-05-15 21:30:10

标签: c++ string identifier

我正在用C ++编写一个程序,它从外部文件中读取一些数据,以便设置静态变量的值。

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

3 个答案:

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

如果您不知道自己要阅读的内容,那么您将进入语法和解析域。为此,您必须定义语法(何时允许“复选框”字符串?)。一旦你写下了语法,你就写了一个词法分析器和一个解析器。有工具可供选择。