c实现打印结构体所有变量
说明
c没有静态反射机制,这里采用暴力解析头文件,并生成代码的形式
有struct定义解析结构体
/*
-来自喜电优的咪唑立宾
*/
#包含位/stdc .h
使用命名空间标准;
使用ll=long long int
命名空间自动化
{
使用func_type=functionll(字符串);
映射,func_type恍惚;
void init()
{
恍惚的。
}
void add(现在ll,func_type func)
{
恍惚[现在]=功能;
}
陆线(landlines的缩写)运行(现在ll,字符串ch)
{
回归恍惚[现在](ch);
}
}
命名空间状态
{
结构s1
{
陆线(landlines的缩写)运算符()(字符串ch)
{
if (ch=='struct ')
返回2;
其他
返回0;
}
};
静态字符串类名;
结构s2
{
陆线(landlines的缩写)运算符()(字符串ch)
{
if (ch=='{ ')
{
class _ name。clear();
返回3;
}
其他
{
class _ name=ch
返回2;
}
}
};
静态字符串类型,值_名称
结构s3
{
陆线(landlines的缩写)运算符()(字符串ch)
{
if (ch==',')
{
值_名称。clear();
返回3;
}
else if(ch==';')
{
打字。clear();
值_名称。clear();
返回3;
}
else if (ch=='} ')
{
打字。clear();
值_名称。clear();
返回4;
}
其他
{
if (type.size()==0)
{
type=ch
}
其他
{
value _ name=ch
}
返回3;
}
}
};
结构第四心音
{
陆线(landlines的缩写)运算符()(字符串ch)
{
if(ch==';')
返回5;
其他
返回0;
}
};
结构表面抗原-5
{
陆线(landlines的缩写)运算符()(字符串ch)
{
返回0;
}
};
}
结构类信息
{
字符串类名;
vectorpairstring,字符串成员;//(类型,成员名)
vectorstring get_token(字符串文本)
{
vectorstring ret
现在字符串;
文本=
用于(自动it :文本)
{
if (isalpha(it)或isdigit(it))
{
now.push_back(它);
}
其他
{
if (now.size())
{
ret。炮位_back(现在);
现在。clear();
}
如果(它!=' ')
ret。炮位_back(string(1,it));
}
}
返回浸水使柔软
}
向量字符串,字符串集(向量字符串标记)
{
cout‘‘‘\ n’;
向量配对字符串,字符串ret
自动: add(1,状态:1());
自动: add(2,状态:2());
自动: add(3,状态:3());
自动: add(4,状态:4());
自动: add(5,状态:5());
陆线(landlines的缩写)现在=1;
(汽车it :令牌)
{
//现在cout调试
now=自动:运行(现在,它);
//cout '-' it '-' now ' \ n;
如果(现在==2)
{
if(状态: class _ name。大小())
class _ name=state : class _ name。size();
}
否则如果(现在==3)
{
if (state:type.size()和
state:value_name.size())
{
ret。炮位_back(state:type,
状态: value _ name);
}
}
}
返回浸水使柔软
}
}信息;
int main()
{
字符串文本;
对于字符串;getline(cin,南);text=s ' ');
auto token=info.get_token(文本);
auto ret=info.set(令牌);
适用于(auto it : ret)
标准输出左设置它。首先设置它。第二个' \ n ';
返回0;
}
作者: XDU18清欢https://www.cnblogs.com/XDU-mzb/
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/36340.html