gpt4 book ai didi

c++ - 初始化结构,使用数组

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:06:03 25 4
gpt4 key购买 nike

我有几个数组:

const string a_strs[] = {"cr=1", "ag=2", "gnd=U", "prl=12", "av=123", "sz=345", "rc=6", "pc=12345"};
const string b_strs[] = {"cr=2", "sz=345", "ag=10", "gnd=M", "prl=11", "rc=6", "cp=34", "cv=54", "av=654", "ct=77", "pc=12345"};

然后我需要解析出“=”,然后将值放入结构中。 (rc key映射到struct中的fc key),形式为:

struct predict_cache_key {
pck() :
av_id(0),
sz_id(0),
cr_id(0),
cp_id(0),
cv_id(0),
ct_id(0),
fc(0),
gnd(0),
ag(0),
pc(0),
prl_id(0)
{ }

int av_id;
int sz_id;
int cr_id;
int cp_id;
int cv_id;
int ct_id;
int fc;
char gnd;
int ag;
int pc;
long prl_id;
};

我遇到的问题是数组不按顺序或与结构字段的顺序相同。所以,我需要检查每一个,然后想出一个方案将它们放入结构中。

使用 C 或 C++ 解决上述问题有什么帮助吗?

最佳答案

可能我没有理解正确,但显而易见的解决方案是将每个数组元素拆分为 keyvalue 然后写 lo-o-ong if-else-if-else ... 序列如

if (!strcmp(key, "cr"))
my_struct.cr = value;
else if (!strcmp(key, "ag"))
my_struct.ag = value;
...

您可以在 C 预处理器的帮助下自动创建此类序列,例如

#define PROC_KEY_VALUE_PAIR(A) else if (!strcmp(key,#A)) my_struct.##A = value

因为前导 else 你这样写代码:

if (0);
PROC_KEY_VALUE_PAIR(cr);
PROC_KEY_VALUE_PAIR(ag);
...

唯一的问题是你们中的一些结构字段有 _id 后缀 - 对于它们你需要创建一个有点不同的宏来粘贴 _id 后缀

关于c++ - 初始化结构,使用数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/286402/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com