结构体如何遍历

ojc520520 2015-02-05 12:11:45
结构中有byte/ word/ dword如何用for遍历;麻烦说具体点,小白一枚!
wsprintf(format, L"0x%08x", test); //这行代码也在循环体中,当wrod类型的时候输出的是4字,dword的时候是8;
...全文
1050 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sandrer 2015-02-06
  • 打赏
  • 举报
回复
成员大小不一致,很难办
zgl7903 2015-02-06
  • 打赏
  • 举报
回复
结构体成员用VARIANT 带类型的 或者用相同的成员类型, 按数组方式处理 union { DWORD Array[]; struct { BYTE a; WORD b; DWORD c; }; };
快乐鹦鹉 2015-02-06
  • 打赏
  • 举报
回复
不放在结构里,那你可以自己定义一个数组啊。自己咋就不会想办法呢?当然,你这个结构最好每个成员都是定长的,如果来个CString,估计就难了。 类似15楼的办法可以考虑,不过可能还需要丰富一下,比如结构中有个浮点型的话,还需要调整,新定义的数组中需要包括成员的类型和长度,然后循环中根据类型使用不同的格式化标记
Eleven 2015-02-05
  • 打赏
  • 举报
回复
通过结构体成员访问
likfeng 2015-02-05
  • 打赏
  • 举报
回复
参考: struct { DWORD d; WORD w; }S; S.d = 10000000; S.w = 1000; int Z[2]; Z[0] = 4; Z[1] = 2; int nSize = 2; WORD w; DWORD d; int n = (int)(&S); CHAR str[100]; for(int i = 0; i < nSize; i++) { if(Z[i] == 2) { memcpy(&w, (void*)n, Z[i]); wsprintf(str, "0x%04x", w); //.. } else if(Z[i] == 4) { memcpy(&d, (void*)n, Z[i]); wsprintf(str, "0x%08x", d); //.. } n += Z[i]; }
lx624909677 2015-02-05
  • 打赏
  • 举报
回复
引用 12 楼 ojc520520 的回复:
[quote=引用 11 楼 lx624909677 的回复:] 结构体中的每个变量,直接用结构体变量来访问里面的每个成员就行了,比如你的结构体叫A,可以用A a的方式来创建一个叫a的结构体变量a,然后用a.的方式来获得结构体里成员的值
结构体中有几十个成员,取到每个成员的值再格式化成字符串在插入到listctrl控件中,要几百行代码;我想用个for循环完成可以吗?[/quote] 可以,你的for循环的作用是遍历结构体变量数组时候用的
oyljerry 2015-02-05
  • 打赏
  • 举报
回复
你用结构体对象,然后成员运算符来访问结构体的各个成员
schlafenhamster 2015-02-05
  • 打赏
  • 举报
回复
直接用 结构的 成员。 如果是 结构数组 按 下标 for
快乐鹦鹉 2015-02-05
  • 打赏
  • 举报
回复
这是啥需求,遍历结构体???
worldy 2015-02-05
  • 打赏
  • 举报
回复
使用结构体的字段名称进行遍历访问,如果你对其内存属性非常熟悉,也可以使用指针进行访问
ojc520520 2015-02-05
  • 打赏
  • 举报
回复
引用 11 楼 lx624909677 的回复:
结构体中的每个变量,直接用结构体变量来访问里面的每个成员就行了,比如你的结构体叫A,可以用A a的方式来创建一个叫a的结构体变量a,然后用a.的方式来获得结构体里成员的值
结构体中有几十个成员,取到每个成员的值再格式化成字符串在插入到listctrl控件中,要几百行代码;我想用个for循环完成可以吗?
lx624909677 2015-02-05
  • 打赏
  • 举报
回复
结构体中的每个变量,直接用结构体变量来访问里面的每个成员就行了,比如你的结构体叫A,可以用A a的方式来创建一个叫a的结构体变量a,然后用a.的方式来获得结构体里成员的值
ojc520520 2015-02-05
  • 打赏
  • 举报
回复
引用 8 楼 happyparrot 的回复:
那只能说你的结构体定义还是有问题。 你可以在结构体中增加一个变量,放在第一个。是一个数组,描述后续的结构体成员的长度。然后你使用这个数组进行遍历就可以了
麻烦给出代码就几行可以了,结构体是系统定义的改变不了; for() { //取出成员的值插入listctrl控件中 }
ojc520520 2015-02-05
  • 打赏
  • 举报
回复
引用 8 楼 happyparrot 的回复:
那只能说你的结构体定义还是有问题。 你可以在结构体中增加一个变量,放在第一个。是一个数组,描述后续的结构体成员的长度。然后你使用这个数组进行遍历就可以了
结构体是改变了是系统定义的;那如何取出各成员的值;t->a, a有可能是word也有可能是dwrod;
快乐鹦鹉 2015-02-05
  • 打赏
  • 举报
回复
那只能说你的结构体定义还是有问题。 你可以在结构体中增加一个变量,放在第一个。是一个数组,描述后续的结构体成员的长度。然后你使用这个数组进行遍历就可以了
ojc520520 2015-02-05
  • 打赏
  • 举报
回复
引用 3 楼 oyljerry 的回复:
你用结构体对象,然后成员运算符来访问结构体的各个成员
遍历结构体中的成员(结构体中的成员是给定的),应为结构体中成员较多,如果不循环遍历的话代码量将很大;
ojc520520 2015-02-05
  • 打赏
  • 举报
回复
引用 4 楼 VisualEleven 的回复:
通过结构体成员访问
遍历结构体中的成员(结构体中的成员是给定的),应为结构体中成员较多,如果不循环遍历的话代码量将很大;
ojc520520 2015-02-05
  • 打赏
  • 举报
回复
引用 1 楼 happyparrot 的回复:
这是啥需求,遍历结构体???
遍历结构体中的成员(结构体中的成员是给定的),应为结构体中成员较多,如果不循环遍历的话代码量将很大;

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧