读书人

只有结构体指针 不知道结构体内容的情

发布时间: 2012-08-16 12:02:15 作者: rapoo

只有结构体指针 不知道结构体内容的情况下如何得到值
目前有的东西

结构体指针 (结构体的内容不知道)
char* 中存贮的结构体的名字
char* 中存贮的结构体的属性名字
属性的类型;

例如 struct temp{
char* name;
int num;};

我只知道 指向temp的指针,char *s = "name" ; ,类型 char*;

如何获取 name 的值?


[解决办法]

探讨
目前有的东西

      结构体指针 (结构体的内容不知道)
      char*  中存贮的结构体的名字
      char*  中存贮的结构体的属性名字
      属性的类型;

例如    struct temp{
        char* name;
        int num;};

  我只知道  指向temp的指针,char *s = "name" ; ,类型 char*;

    如何获取 name 的值?


[解决办法]
使用void *和memcpy+table作的测试
仅供参考
C/C++ code
#include "stdio.h"   #include "string.h"     typedef struct  {       int  nData;       char chData;   }Tstruct1;     typedef struct  {       int   nData;       char  chData;       short wData;   }Tstruct2;     Tstruct1 tTestt1 = {100, '1'};   Tstruct2 tTestt2 = {200, '2', 20};     const char *Stable[]=   {       (const char *)(&tTestt1),       (const char *)(&tTestt2),   };       void GetStructT(int type, void *pvOutBuf, int dwLen)   {       char *lpstrBuf = NULL;         lpstrBuf = (char *)(Stable[type]);       memcpy(pvOutBuf, (char *)lpstrBuf, dwLen);   }     void SetStructT(int type, void *pvOutBuf, int dwLen)   {       char *lpstrBuf = NULL;         lpstrBuf = (char *)(Stable[type]);       memcpy(lpstrBuf, pvOutBuf, dwLen);   }       int main(void)   {       Tstruct1 at1 = {0};       Tstruct2 at2 = {0};         GetStructT(0, &at1, sizeof(Tstruct1));       printf("struct1: nData:%d, chData:%c\n", at1.nData, at1.chData);       GetStructT(1, &at2, sizeof(Tstruct2));       printf("struct2: nData:%d, chData:%c, wData:%d\n", at2.nData, at2.chData, at2.wData);       at2.nData  = 700;       at2.chData = '8';       at2.wData  = 66;       SetStructT(0, &at2, sizeof(at2));       printf("struct2: nData:%d, chData:%c, wData:%d\n", at2.nData, at2.chData, at2.wData);         return 0;   } 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jernymy/archive/2010/01/09/5165453.aspx
[解决办法]
探讨
引用:
目前有的东西

       结构体指针 (结构体的内容不知道)
       char*  中存贮的结构体的名字
       char*  中存贮的结构体的属性名字
       属性的类型;

例如    struct temp{
         char* name;
         int num;};

  我只知道  指向temp的指针,char *s = "name" ; ,类型 char*;

    如何获取 name 的值?



是想做一个通用的模板  不管什么结构体只要指针传进来都能把数据取出来

有结构体的文档  可以在程序中读取



[解决办法]
估计你想实现Java的那种reflection机制,通过类名获取类的方法名和返回值类型,类的属性名。
可以google一下 c++ reflection实现,有这种库和例子。
[解决办法]
这个我看得自己设计一个结构,统一第一个是该结构体的大小,然后把结构体读入内存,里面的数据可以设计成一个个的struct,第一个成员是类型(用枚举),第二个成员是数据名,第三个就是类型的数据:
大意结构(不是代码):
C/C++ code
struct Test{  strcut  {    type t = integrate    char *name = "usa";    int usa = 300;  };  …………};
------解决方案--------------------


你应该可以用map吧
成员的名字可以用map的元素表示

读书人网 >C语言

热点推荐