返回信息流对于一个大结构体,怎样才能用简单的方法将其中的字段都遍历出来?
这是一条镜像帖。来源:北邮人论坛 / cpp / #73000同步于 2013/8/3
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
能用C遍历一个结构体吗?
bingyi
2013/8/3镜像同步60 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
C中从没出现过遍历自己声明的结构体的这种需求...内在逻辑是这样的:
既然你知道这片内存数据是结构体,你已经声明了这个结构体,那你怎么还需要遍历字段呢,直接通过基址加偏址去拿就好了~
【 在 bingyi 的大作中提到: 】
: 对于一个大结构体,怎样才能用简单的方法将其中的字段都遍历出来?
如果,结构体内数据大小不一呢?使用循环去拿肯定出错啊
【 在 tonyjansan 的大作中提到: 】
: C中从没出现过遍历自己声明的结构体的这种需求...内在逻辑是这样的:
: 既然你知道这片内存数据是结构体,你已经声明了这个结构体,那你怎么还需要遍历字段呢,直接通过基址加偏址去拿就好了~
:
结构体里数据大小不一致的成员都定义成指针
然后用指针指向实际的数据
【 在 bingyi 的大作中提到: 】
: 如果,结构体内数据大小不一呢?使用循环去拿肯定出错啊
【 在 bingyi 的大作中提到: 】
: 对于一个大结构体,怎样才能用简单的方法将其中的字段都遍历出来?
nansy,你得给你的结构体设计一套类似文件系统的“数据系统”,或者“数据库”,并使用这套系统来创建规范你的结构体,这样你才能按照你所要求的方式遍历信息。
不好理解的话举个例子:Microsoft Office套件中的 Microsoft Word 程序,它可以打开任何不同的word文档。
其中,Word程序创建或打开word文档的算法,就是上面提到的数据系统,而不同的word文档则是你要遍历结构体中的不同信息。
就像NTFS等文件系统中,每一个字段中都有一部分是用来表示本字段总长度,或者子字段的偏移量等信息的。只有设置好控制信息,才能够做到遍历自动化!