我正在编写一个类似 INI 的配置文件,我想知道在 C/C++ 中解析它的最佳方法。我在 POSIX 上写它,所以我将使用 # 而不是 ;。这没关系。我只是想知道,是否有某种教程,有关解析事物的文章或其他内容。
问问题
3058 次
6 回答
3
有很多关于解析的教程和文章,但是您所处理的内容是如此琐碎,以至于它们中的大多数都可能是矫枉过正的。
鉴于以前这样做的频率,我将首先查看一些已经实现几乎您想要的现有代码。
于 2010-09-12T16:31:57.470 回答
2
已经有很多开源库,您可能只需很少或无需修改即可使用,例如libini。
于 2010-09-12T17:10:11.057 回答
1
与 C++ 基本内容一样,boost 有一个可以读取 ini 文件的库。实际上有两个库,具体取决于您要实现的目标:
- boost 程序选项允许您从命令行或 ini 或混合源管理程序选项:http: //www.boost.org/doc/libs/1_44_0/doc/html/program_options.html;
- boost 属性树为您工作:http: //www.boost.org/doc/libs/1_44_0/doc/html/boost_propertytree/parsers.html
于 2010-09-12T21:37:50.457 回答
1
尝试配置器。它是易于使用且灵活的 C++ 库,用于配置文件解析(从最简单的 INI 到具有任意嵌套和语义检查的复杂文件)。仅标题和跨平台。使用 Boost C++ 库。
于 2010-11-11T19:43:40.950 回答
0
根据您实际需要的复杂程度,您可能只需在循环中使用 fgets() 并手动解析每一行(例如使用 strstr()、strchr()、strcmp() 等)。如果您只需要获取一些值,那么拖入解析库就没有什么意义了。
于 2010-09-12T22:05:38.860 回答
0
如果 Boost 对你来说太过分了,试试这个 6 Kb BSD 许可代码。
“inih (INI Not Invented Here) 是一个用 C 语言编写的简单 .INI 文件解析器。它只有几页代码,而且设计得小而简单,所以它适用于嵌入式系统。”
http://code.google.com/p/inih/
如果您更喜欢对象,还有一个 C++ 类,它同时支持“;” 和“#”评论。
于 2013-12-25T20:41:01.297 回答