simpleini图文讲解

目录

简介 

注意事项

ini数据加载和输出

字符集自动转换

API

Demo


文记录simpleini 的使用心得,篇幅较小,主要总结其中的重点部分,以文字和图表的方式叙述。

简介 

simpleini是C++对ini格式数据的解析/生成库。我比较推荐,理由可看介绍https://github.com/brofield/simpleini,其中我比较看重以下几个优点: 

  1. simpleini库仅由SimpleIni.h一个文件组成。
  2. simpleini库支持charwchar_t字符编程。
  3. 可选支持多行的value和重复的key名称
  4. 可选支持不区分大小写的section和key
  5. 支持key/value可以没有对应的section。
  6. 支持section和key可以按照加载时的顺序获取。
  7. simpleini库加载或输出数据时,支持UTF-8字符集和MBCS(本地语言)字符集。
  8. simpleini库解析ini数据前,若使用wchar_t接口,自动将ini数据的字符集转换为当前字符集。

缺点: 

  1. simpleini库加载ini格式数据前,不支持自动识别字符集,必须在加载数据前显式指明数据源的字符集。
  2. simpleini库加载和输出数据时,仅支持UTF-8和MBCS(本地语言)字符集,而其他字符集暂不支持。

注意事项

  1. 解析ini数据时,注意字符集的自动转换。如果当前使用char接口,则输入数据没有发生字符集转换,字符集保持不变(加载的数据是UTF-8/ MBCS字符集,则保存相应字符集的数据。如果当前使用wchar_t接口,则输入数据的字符集(UTF-8/MBCS)自动转换为UTF-16/32字符集。
  2. 当使用wchar_t接口时,由于加载数据和输出数据时都会自动转换字符集,因此输出数据时,字符集被还原回来了,即输出数据的字符集始终与原始数据的字符集保持一致。

ini数据加载和输出

 

字符集自动转换

 

API

重点了解ini数据加载和输出,以及字符集自动转换。API的熟悉只需多用即可,simpleini的API也是类似DOM,因此也简单易用。 

Demo

// 不区分大小写
CSimpleIni ini;
CSimpleIni::TNamesDepend sections;
ini.GetAllSections(sections);
sections.sort(typename CSimpleIni::Entry::LoadOrder());		// 按照加载时的顺序排序
for (const auto &it : sections)
{
	const CSimpleIni::TKeyVal *pKeyVal = ini.GetSection(it.pItem);
	if (nullptr != pKeyVal)
	{
		for (const auto& it : *pKeyVal)
		{
			cout << it.first.pItem << _T(" = ") << it.second << endl;
		}
	}
}

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值