- 主题:Re: [求助]大型struct填充
数据预处理成json/xml之类的格式化数据,然后用json/xml的反序列化库自动填充struct就行了
--
FROM 123.119.160.*
给struct加个构造函数就行了
或者这么写
typedef struct
{
int xx = 0;
char name[20] = {0};
char price[10] = {0};
/* 此处省略一百多行 */
char attr200[30] = {0};
int yy = 0;
} xstruct;
也不比 copy那么多吧
直接重写拷贝构造或者=号
把char name[20]改成 string或者array之类
【 在 dajun 的大作中提到: 】
: 真正上古代码,一群真正智障在改.
: 比如:
: [code=c]
: ...................
--
修改:iwantfly FROM 221.219.211.*
FROM 221.219.211.*
或者这样
xstruct a, b;
memset(&a, 0, sizeof(xstruct));
memset(&b, 0, sizeof(xstruct));
...
....
memcpy(&a,&b, sizeof(xstruct));
【 在 dajun 的大作中提到: 】
: 真正上古代码,一群真正智障在改.
: 比如:
: [code=c]
: ...................
--
修改:iwantfly FROM 221.219.211.*
FROM 221.219.211.*
反序列化不需要挨个字段赋值,比如
nlohmann::json j = nlohmann::json::parse(jsonString);
auto order = j.template get<xstruct>();
只不过,把繁琐的代码给移到预处理程序里了。
【 在 ylh0315 的大作中提到: 】
: 那也得一个一个字段的赋值
--
FROM 123.119.160.*
c语言就是各种自己造轮子
你这往文件里写的时候,肯定也是一个字段一个字段手写的吧
既然是这么多字段的结构,就上个序列化反序列化的库吧
【 在 dajun 的大作中提到: 】
: 真正上古代码,一群真正智障在改.
: 比如:
: [code=c]
: ...................
--
FROM 124.126.0.*
最简单的办法应该是装个copilot,让copilot来写……
--
FROM 115.205.68.*
不要over engineering
【 在 ylh0315 的大作中提到: 】
: 那么,是否有可能,让AI写个我前面描述的泛型模板系统呢?包括模板生成工具。把设计思想告诉它。
--
FROM 183.128.142.*
您老那个C里面的反序列化的轮子,现在C++里面是现成的,就是nlohmann json里的j.template get()那种
等C++的反射标准搞定,这种就更好搞了
【 在 ylh0315 的大作中提到: 】
: 那么,是否有可能,让AI写个我前面描述的泛型模板系统呢?包括模板生成工具。把设计思想告诉它。
--
FROM 123.119.160.*
这本来就是体力活,等你来干的
一个办法手写实现一个
然后gpt根据你提供的,根据新的struct写新的
【 在 dajun 的大作中提到: 】
: 真正上古代码,一群真正智障在改.
: 比如:
: [code=c]
: ...................
--
FROM 114.249.20.*
nlohmann json是开源的,用宏添加字段的meta信息。
C++标准没提供反射机制的情况下,基本就这种搞法了,要不就得预处理,类似Qt、protobuf那些的meta信息处理
【 在 ylh0315 的大作中提到: 】
: 毕竟是20年前的了,而且楼主也等不及。
: 介绍下你说的template,怎么描述结构成员。
--
修改:z16166 FROM 222.128.162.*
FROM 222.128.162.*