[libiniloader] Project
Github地址: https://github.com/owt5008137/libiniloader
OSChina镜像: http://git.oschina.net/owent/libiniloader
项目中经常会碰到需要读取配置的情况,而用ini配置最大的优势就是简单易懂。 但是现在很多的配置读取库都过于庞大了,比如Boost.PropertyTree,功能很强大,但是基本不会用到里面所有的东西。 另外微软的INI读取,功能不是很强不说,还限制在Windows上,更重要的是API设计得实在不优雅。 于是libiniloader就诞生啦。
这个库主要是用于提供一个跨平台并且简单易用的配置读取和转储方式,另一方面希望兼容很多开源组件的配置方式。(比如apache的httpd用#来注释) 再有就是借鉴PHP框架Zend Framework对ini的多个层级关系的扩展。这些奇怪的特性导致了ini loader对ini的支持和最初设计的ini格式略微有所差异。 主要有:
支持Section
Secion支持父子关系,即 [ A : B : C ] 语法
支持多重父子关系,如 C.B.A = d
支持字符串转义,其中以'包裹的不进行转义,以"包裹的可进行转义,如 C.B.A = "Hello \r\n World!"
配置的Key名称不能包含引号('和")、点(.)、冒号(:)和方括号([])
配置的Key名称区分大小写
符号也将是做行注释,与 ; 等价
另外为了转储便利,专门设计了一组API用于快速数据。dump_to。它可以用于快速提取数据和转换格式。 并且为了方便配置,对于bool类型有特殊处理。即除 空字符串、no、0、disable、disabled、false外,其他所有值再转换为bool类型时都被视为true。
示例: test.ini:
a.b.c1 = 123 # 整数
a.b.c2 = 1.23 ; 小数
[a : b:c:d]
e.f = "123456" ; 可转义字符串
e.f2 = '123456'; 不可转义字符串
[a]
b.c3 = 带空格 的 字符 串
arr = 1
arr = 2
arr = 3
arr = 一坨屎
arr = /usr/local/gcc-4.8.2
bool = true
bool = false
bool = yes
bool = no
bool = enable
bool = disable
bool = 1
bool = 0C++文件:
Last updated
Was this helpful?