我正在尝试将文件中的值动态分配给结构中的变量,但不知道该怎么做。我有一个结构:
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; }
现在你可以像这样使用 map 了
abc output;
auto key = ...;
auto value = ...;
if (mapping.find(key) == mapping.end())
throw ...;
mapping[key](value, output);
关于c++ - 为结构变量动态赋值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31494658/