3

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

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

4

3 回答 3

2

不,如果你想这样做,你将不得不手动解析字符串并自己完成工作。

于 2010-05-15T21:33:02.233 回答
1

不,不是,除非您在程序中定义了映射方法。

但是,您可以创建一个哈希并查找它。

于 2010-05-15T21:33:42.650 回答
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) )
    // ...

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

于 2010-05-15T21:42:45.110 回答