是否可以从字符串访问变量?

时间:2018-07-05 13:06:49

标签: c++

我想做什么:例如,我有这个:

    int some_random_name;
    string str="some_random_name";

那么我可以仅使用int字符串访问str变量吗?

对不起,如果我的问题愚蠢而奇怪;

3 个答案:

答案 0 :(得分:4)

不幸的是,您追求的是 reflection 这个概念,而C ++不支持该概念(这使它可以编译出所有变量名)。

一种方法是维护用std::map键控的std::string,其中值是指向要访问的变量的指针,或者甚至是值本身。

答案 1 :(得分:3)

  

我正在尝试创建图灵机模拟器,其中状态具有类似“ 1RQ2”的命令,因此我认为我可以使用“ Q2”部分并将其用于运行Q2状态执行。像q_exe(Q2);

首先要进行的观察是,您不必将数据存储在实际的命名变量中。如果您使用map<string, int>,整个问题将变得非常简单。

使用这种方法绝对不需要任何类型的指针。

答案 2 :(得分:-2)

您可以使用地图。

int some_random_name = 3;
std::string str="some_random_name";
std::map<std::string, int*> map;
map[str] = &some_random_name;

std::cout << *(map[str]); // print 3
*(map[str]) = 5;
std::cout << *(map[str]); // print 5
some_random_name = 8;
std::cout << *(map[str]); // print 8

您也可以使用宏,例如:

#define REGISTER_VARNAME(var) map[#var] = &var