wsprintf(format, L"0x% 08x", test); //这行代码也在循环体中,当wrod类型的时候输出的是4字,dword的时候是8;
18 个解决方案
#1
这是啥需求,遍历结构体???
#2
直接用 结构的 成员。
如果是 结构数组 按 下标 for
如果是 结构数组 按 下标 for
#3
你用结构体对象,然后成员运算符来访问结构体的各个成员
#4
通过结构体成员访问
#5
遍历结构体中的成员(结构体中的成员是给定的),应为结构体中成员较多,如果不循环遍历的话代码量将很大;
#6
遍历结构体中的成员(结构体中的成员是给定的),应为结构体中成员较多,如果不循环遍历的话代码量将很大;
#7
遍历结构体中的成员(结构体中的成员是给定的),应为结构体中成员较多,如果不循环遍历的话代码量将很大;
#8
那只能说你的结构体定义还是有问题。
你可以在结构体中增加一个变量,放在第一个。是一个数组,描述后续的结构体成员的长度。然后你使用这个数组进行遍历就可以了
你可以在结构体中增加一个变量,放在第一个。是一个数组,描述后续的结构体成员的长度。然后你使用这个数组进行遍历就可以了
#9
结构体是改变了是系统定义的;那如何取出各成员的值;t->a, a有可能是word也有可能是dwrod;
#10
麻烦给出代码就几行可以了,结构体是系统定义的改变不了;
for()
{
//取出成员的值插入listctrl控件中
}
#11
结构体中的每个变量,直接用结构体变量来访问里面的每个成员就行了,比如你的结构体叫A,可以用A a的方式来创建一个叫a的结构体变量a,然后用a.的方式来获得结构体里成员的值
#12
结构体中有几十个成员,取到每个成员的值再格式化成字符串在插入到listctrl控件中,要几百行代码;我想用个for循环完成可以吗?
#13
使用结构体的字段名称进行遍历访问,如果你对其内存属性非常熟悉,也可以使用指针进行访问
#14
可以,你的for循环的作用是遍历结构体变量数组时候用的
#15
参考:
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];
}
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];
}
#16
成员大小不一致,很难办
#17
不放在结构里,那你可以自己定义一个数组啊。自己咋就不会想办法呢?当然,你这个结构最好每个成员都是定长的,如果来个CString,估计就难了。
类似15楼的办法可以考虑,不过可能还需要丰富一下,比如结构中有个浮点型的话,还需要调整,新定义的数组中需要包括成员的类型和长度,然后循环中根据类型使用不同的格式化标记
类似15楼的办法可以考虑,不过可能还需要丰富一下,比如结构中有个浮点型的话,还需要调整,新定义的数组中需要包括成员的类型和长度,然后循环中根据类型使用不同的格式化标记
#18
结构体成员用VARIANT 带类型的
或者用相同的成员类型, 按数组方式处理
union
{
DWORD Array[];
struct
{
BYTE a;
WORD b;
DWORD c;
};
};
或者用相同的成员类型, 按数组方式处理
union
{
DWORD Array[];
struct
{
BYTE a;
WORD b;
DWORD c;
};
};
#1
这是啥需求,遍历结构体???
#2
直接用 结构的 成员。
如果是 结构数组 按 下标 for
如果是 结构数组 按 下标 for
#3
你用结构体对象,然后成员运算符来访问结构体的各个成员
#4
通过结构体成员访问
#5
这是啥需求,遍历结构体???
遍历结构体中的成员(结构体中的成员是给定的),应为结构体中成员较多,如果不循环遍历的话代码量将很大;
#6
通过结构体成员访问
遍历结构体中的成员(结构体中的成员是给定的),应为结构体中成员较多,如果不循环遍历的话代码量将很大;
#7
你用结构体对象,然后成员运算符来访问结构体的各个成员
遍历结构体中的成员(结构体中的成员是给定的),应为结构体中成员较多,如果不循环遍历的话代码量将很大;
#8
那只能说你的结构体定义还是有问题。
你可以在结构体中增加一个变量,放在第一个。是一个数组,描述后续的结构体成员的长度。然后你使用这个数组进行遍历就可以了
你可以在结构体中增加一个变量,放在第一个。是一个数组,描述后续的结构体成员的长度。然后你使用这个数组进行遍历就可以了
#9
那只能说你的结构体定义还是有问题。
你可以在结构体中增加一个变量,放在第一个。是一个数组,描述后续的结构体成员的长度。然后你使用这个数组进行遍历就可以了
结构体是改变了是系统定义的;那如何取出各成员的值;t->a, a有可能是word也有可能是dwrod;
#10
那只能说你的结构体定义还是有问题。
你可以在结构体中增加一个变量,放在第一个。是一个数组,描述后续的结构体成员的长度。然后你使用这个数组进行遍历就可以了
麻烦给出代码就几行可以了,结构体是系统定义的改变不了;
for()
{
//取出成员的值插入listctrl控件中
}
#11
结构体中的每个变量,直接用结构体变量来访问里面的每个成员就行了,比如你的结构体叫A,可以用A a的方式来创建一个叫a的结构体变量a,然后用a.的方式来获得结构体里成员的值
#12
结构体中的每个变量,直接用结构体变量来访问里面的每个成员就行了,比如你的结构体叫A,可以用A a的方式来创建一个叫a的结构体变量a,然后用a.的方式来获得结构体里成员的值
结构体中有几十个成员,取到每个成员的值再格式化成字符串在插入到listctrl控件中,要几百行代码;我想用个for循环完成可以吗?
#13
使用结构体的字段名称进行遍历访问,如果你对其内存属性非常熟悉,也可以使用指针进行访问
#14
结构体中的每个变量,直接用结构体变量来访问里面的每个成员就行了,比如你的结构体叫A,可以用A a的方式来创建一个叫a的结构体变量a,然后用a.的方式来获得结构体里成员的值
结构体中有几十个成员,取到每个成员的值再格式化成字符串在插入到listctrl控件中,要几百行代码;我想用个for循环完成可以吗?
可以,你的for循环的作用是遍历结构体变量数组时候用的
#15
参考:
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];
}
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];
}
#16
成员大小不一致,很难办
#17
不放在结构里,那你可以自己定义一个数组啊。自己咋就不会想办法呢?当然,你这个结构最好每个成员都是定长的,如果来个CString,估计就难了。
类似15楼的办法可以考虑,不过可能还需要丰富一下,比如结构中有个浮点型的话,还需要调整,新定义的数组中需要包括成员的类型和长度,然后循环中根据类型使用不同的格式化标记
类似15楼的办法可以考虑,不过可能还需要丰富一下,比如结构中有个浮点型的话,还需要调整,新定义的数组中需要包括成员的类型和长度,然后循环中根据类型使用不同的格式化标记
#18
结构体成员用VARIANT 带类型的
或者用相同的成员类型, 按数组方式处理
union
{
DWORD Array[];
struct
{
BYTE a;
WORD b;
DWORD c;
};
};
或者用相同的成员类型, 按数组方式处理
union
{
DWORD Array[];
struct
{
BYTE a;
WORD b;
DWORD c;
};
};