动态赋值给结构变量

Dynamically assigning value to structure variable

本文关键字:变量 结构 赋值 动态      更新时间:2023-10-16

我试图动态地将值从文件分配给结构中的变量,但无法弄清楚如何做到这一点。我有一个结构:

struct abc {
 int age = 0;
 string name = "whatever";
} *ABC;

我还有一个函数,它循环遍历可以读取这些值的文件,因此我将得到一行包含需要更新的变量名及其值的代码。因此,例如,我最终可能会有两个变量:

KEY="age"
VAL="21"

在处理以下文件的第一行之后:

age|21
name|bill

我如何将VAL值分配给ABC结构变量KEY?

谢谢!

更新:

所以我想做这样的事情:

ABC.KEY = VAL

意义
ABC.age = 21

您正在寻找的被称为反射,而c++不提供此功能。

如果要将键值匹配到结构体的成员,必须自己构建一个结构体和函数来完成。

例如,您可以这样考虑:

std::unordered_map<std::string, std::function<void(std::string, abc&)>> mapping;
mapping["age"] = [](std::string str, abc& a) { a.age = std::stoi(str); };
mapping["name"] = [](std::string str, abc& a) { a.name = str; }

现在您可以使用像

这样的映射
abc output;
auto key = ...;
auto value = ...;
if (mapping.find(key) == mapping.end())
    throw ...;
mapping[key](value, output);