我有几个数组:
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键映射到结构中的fc键),其形式为:
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; };
我遇到的问题是数组不是与struct字段顺序或顺序相同.因此,我需要检查每个,然后想出一个方案,将相同的结构放入结构中.
有什么帮助使用C或C++来解决上述问题?
也许我没有正确地得到它,但显而易见的解决方案是将每个数组元素拆分成key
和value
,然后写LO-O-翁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
后缀