C++ 如果通过解析字符串定义一个结构体

110 天前
 wisefree
"
struct demo
{
	uint32_t x;
    double y;
    int arr[3];
}
"

请问大家,假设有这样的一个字符串,C++有没有现成的库,可以方便地把字符串转成结构体定义呢?

2244 次点击
所在节点    C++
29 条回复
GeruzoniAnsasu
110 天前
bl4ckoooooH4t
110 天前
不用自己开发,010 editor 的 template 已经有这个功能了
yyang179
110 天前
最近刚好做了个类似的功能,提供一个 C++能嵌入 python 的思路:
1. 结构体转 Python ,依托于 ctypeslib2 (这个库通过 clang 的词法分析,将结构体转为 python 的 ctypes ),ctypeslib2 调用 clang 会有些问题,会需要改写 ctypeslib2 的部分源码。
2. Python 可以通过转出的库,用 from_buffer_copy 函数直接做结构体与数据映射(前提是指针长度,对齐方式需要一致),然后导出想要的数据结构,这一步用 python 写起来比 C++方便很多很多。
3. C++调用 python 的脚本,或者通过 pybind11 调用 python 的函数
gaifanking
110 天前
这不就是基于流的解析,参考 IM 中长链接协议的制定这种。
sjkdsfkkfd
110 天前
ImHex 有一个 pattern language 就是干这个的,你可以参考一下 https://github.com/WerWolv/PatternLanguage/
aloxaf
110 天前
Kaitai Struct ?
neocanable
109 天前
@wisefree 这样假设好实现,hard code 一堆,估计莫名的 bug 会一堆一堆,找的时候痛苦的要死
yanqiyu
109 天前
感觉是 jit 的活
tyzandhr
70 天前
黑魔法:根据编译器模拟结构体内存布局。手动对齐。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1015079

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX