动态赋值给结构变量
Dynamically assigning value to structure variable
我试图动态地将值从文件分配给结构中的变量,但无法弄清楚如何做到这一点。我有一个结构:
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);
相关文章:
- 从结构寻址时,MMAP变量的行为很奇怪
- 访问在 C++ 结构中声明的枚举变量
- 我可以在 C++ 中将数据成员/变量从其定义之外添加到结构中吗?
- 如何为 c++ 的不同变量类型的结构元素创建动态数组?
- 为什么未命名的结构内联变量在每个翻译单元中没有相同的地址?
- 在类构造函数中使用结构变量
- 在 c++ 中将变量作为结构构造函数中的引用传递
- 在类构造函数中定义结构变量的参数
- 为什么我们再次从结构对象创建结构变量?
- 从另一个 cpp 文件更改结构内、映射键内的变量
- 模板化结构中的零大小成员变量
- C++ 结构中的可选变量(变量结构)
- 对其中一个变量的多变量结构进行排序
- 指向非指针变量结构的指针。这些变量在哪里,堆还是堆栈?
- 是好是坏:为了避免使用全局变量/结构体的属性/大量参数而使用巨型结构体
- Cpp变量/结构用于存储128位数据
- 第一私有变量结构中允许的OpenMP调用和指令
- VS2008传递变量-结构与结构组件-优点/缺点
- 在c++类成员函数中使用c库变量/结构成员
- 如何不迷失在执行'<'对于多变量结构