3

I'm writing a program in C++ that reads in some data from an external file in order to set the values of static variables.

Is it possible to convert a string to an object identifier? (e.g. convert the string "CheckBox::Unchecked" into an identifier for the object 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) )
    // ...

何を読もうとしているのかわからない場合は、文法と構文解析のドメインにいることになります。そのためには、文法を定義する必要があります ("checkbox" 文字列はいつ許可されますか?)。文法を書き留めたら、レクサーとパーサーを書きます。そのためのツールがあります。

于 2010-05-15T21:42:45.110 に答える