我有几个数组:
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"};
Run Code Online (Sandbox Code Playgroud)
然后我需要解析'='然后将值放在结构中.(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;
};
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是数组不是与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;
...
Run Code Online (Sandbox Code Playgroud)
您可以在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);
...
Run Code Online (Sandbox Code Playgroud)
你们中的一些结构字段唯一的问题是具有_id
后缀 - 对于它们你需要创建一个不同的宏来粘贴_id
后缀