我正在尝试动态地将文件中的值分配给结构中的变量,但无法弄清楚如何执行此操作。我有一个结构:
Tag push events
我还有一个函数循环遍历一个可以读取这些值的文件,所以我最终会得到一个包含变量名称及其值需要更新的行。因此,例如,我最终可能会得到两个变量:
struct abc {
int age = 0;
string name = "whatever";
} *ABC;
处理以下文件的第一行后:
KEY="age"
VAL="21"
如何将VAL值分配给ABC结构变量KEY?
谢谢!
更新:
所以我想做点什么:
age|21
name|bill
含义
ABC.KEY = VAL
答案 0 :(得分:1)
您正在寻找的内容称为反射,而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);