c++ - 从名称在字符串上的整数获取值

标签 c++ string evaluate

int a = 1;
int b = 2;
int c = 3;
std::string TakeFrom = "a";

如何从 TakeFrom 获取值,在本例中为 a,并读取这样命名的整数?例如,在上面的代码中,我必须读取 a 的值,因为“a”是 TakeFrom 包含的内容,所以我会得到“1”,但如果 TakeFrom 包含“b”,我会得到 b 的值 (2)。

最佳答案

在正常的 C/C++ 条件下,变量名仅在编译期间在其给定范围内存在,它们本质上是人类可读的助记符,用于引用特定的内存位置/寄存器。

C/C++ 具有极小的反射功能,因此没有内置方法在运行时通过名称引用变量或通过变量的位置/值查找变量的名称。

要解决您所描述的问题,有几个简单的选项:

int value;
if (TakeFrom == "a") {
     value = a;
} else if (TakeFrom == "b") {
     value = b;
} ...

switch (TakeFrom[0]) {
    case 'a':
        value = a;
    break;
    case 'b':
        value = b;
    break;
}

或者你可以使用查找表

int a = 1, b = 2, c = 3;
struct Lookup {
    int&         m_variable;
    const char*  m_name;
};
static const size_t NumLookups = 3;
Lookup lookups[NumLookups] = { { a, "a" }, { b, "b" }, { c, "c" } };
for (size_t i = 0; i < NumLookups; ++i) {
    if (TakeFrom == lookups[i].m_name)
        value = lookups[i].m_variable;
}

关于c++ - 从名称在字符串上的整数获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19735042/

相关文章:

c++ - glm的orientAngle()函数中的 "reference vector"是什么?

c - 在 C 中处理多字节(非 ASCII)字符

C++ 无限循环瓶颈?

c++ - 在类构造函数中初始化线程会导致崩溃吗?

c++ - 使用 C++11 散列自己的字符串类型

r - 使用 R 中的一个数据评估多个函数

javascript - XPath 表达式在 Chrome 中返回 'illegal string specified' 而不是 FF

string - 从 Lua 表达式中提取变量

C++ OpenCV VideoWriter 帧率同步

c++ - 在C++中动态输入二维字符数组