- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
libconfig中文手册
libconfig手册
翻译自libconfig英文版手册部分内容——倪里特
配置文件
libconfig支持结构化、层次化的配置。这些配置可以从文件中读取或写入文件,也可以在内存中操作。
一个配置由一组setting构成,setting由名字(name)关联,并有相应的值(value)。一个值(value)可以是以下任意一种类型:
标量值(scalar value):整型、64位整型、浮点数、布尔值或者字符串
数组(array):一组标量值的序列,所有的标量值必须为同一类型
群组(group):多个setting的集合
列表(list):一组值(value)的序列,各个值可(value)以分别为不同的类型,其他的列表也可以包含其中。
观察下面这一个层次化GUI应用程序的配置文件,它阐明了一个配置文件语法所有的元素。
#Exampleapplicationconfigurationfile
version=1.0;
application:
{
window:
{
title=MyApplication;
size={w=640;h=480;};
pos={x=350;y=250;};
};
list=((abc,123,true),1.234,(/*anemptylist*/));
books=(
{
title=TreasureIsland;
author=RobertLouisStevenson;
price=29.95;
qty=5;
},
{
title=SnowCrash;
author=NealStephenson;
price=9.99;
qty=8;
}
);
misc:
{
pi=3.141592654;
bigint=9223372036854775807L;
columns=[LastName,FirstName,MI];
bitmask=0x1FC3;
};
};
包含在配置中的某个setting可以用path来唯一定义,path用点号分隔连接多个名字(name),由最顶层的群组(group)开始,到setting自身结束。path中的每个名字都是一个setting的名字;如果这个setting没有名字,那是因为它是数组(array)或列表(list)中的一个元素。用方括号包含一个整型索引值可以用来表示它的名字。
举个例子,在上面这个多层的配置文件中,名为x的setting,指向它的path就是application.window.pos.x;名为version的setting,指向它的path就是很简单的version;指向book列表中第2个book,名为title的setting,指向它的path就是application.books.[1].title。
一个值(value)的数据类型由它本身的格式所决定。
如果一个值用双引号围住,那它被认为是一个字符串;
如果它看起来是一个整型或浮点数,那它就被认为是整型或浮点数;
如果它是TRUE、FALSE、true、false中的某个,那它就被认为是布尔值(TRUE、FALSE大小写不敏感,比如tRuE或fALse也被看作为TRUE或FALSE);
如果在方括号中包含了多个逗号分隔的值,那它就被认为是数组;
如果在圆括号中包含了多个逗号分隔的值,那它就被认为是列表;
任何值如果不符合上述的标准,则会被认为是无效并且产生一个分析错误。
所有的名字(name)都是大小写敏感的,并且只能由数字字母、横杠(-),下横杠(_)和星号(*)组成,而且必须以字母或星号开头。其他字符都是非法的。
在C和C++中,整型、64位整型、浮点数和字符串分别被映射为int、long long、double和const char *。布尔型在C中被映射为int,在C++中被映射为bool。
下面的章节会从更多的细节方面描述配置文件语法的各个元素。
setting
一个setting的格式如下:
name = value;
或者
name : value;
结尾的分号是必须要有的,空白字符会被忽略;
value可以是标量值、数组、群组或者列表。
群组(group)
一个群组的格式如下:
{setting1, setting2, …}
一个群组可以包含任意个setting,但是在群组中,每个setting的名字必须是唯一的。
数组(array)
一个数组的格式如下:
[value, value, …]
一个数组可以有零个或者多个元素,但是每个元素都必须是相同类型的标量值。
列表(list)
一个列表的格式如下:
(val
文档评论(0)