ini格式数据生成与解析具体解释


1、ini格式数据长啥样?

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

2、ini格式数据简单介绍

INI文件的命名来源,是取自英文“初始(Initial)”的首字缩写,正与它的用途——初始化程序对应。
有时候。INI文件也会以不同的扩展名,如“.cfg”、“.conf”(在Linux系统中也经常使用到)、或是“.txt”取代(从辨识度的角度。不建议使用)。

3、ini格式数据适用场景

INI文件是一个无固定标准格式的配置文件。它以简单的文字与简单的结构组成,常用在windows或是其它OS(Linux等)上。


4、经常使用开源的CIniFile注意事项?

1)将iniFile.h、iniFile.cpp包括到自己的project中;
2)读取的时候须要进行配置文件路径初始化。函数接口:构造函数或者Initialize( ).
解析前须要将全部配置文件ini格式数据读取到缓存区以便解析,函数接口:ReadFile( ).

5、构造ini格式数据
//ini文件初始化、写入文件測试.
void BuildAndWriteIniToFile()
{
CIniFile iniFile( "./ini_oracle_test.ini"); //读取文件
iniFile.ReadFile(); //读取ini文件里的session个数.
cout << "NKeys = " << iniFile.NumKeys() << endl; //new add array_data 新增数据
iniFile.SetValue( "section3", "TASK_ID", "3"); //格式为:session--Key--Value形式.
iniFile.SetValue( "section3", "SYSTEM_ID", "22");
iniFile.SetValue( "section3", "TASK_NAME", "\"test\"");
iniFile.SetValue( "section3", "START_TIME", "25-11月-14 02.49.00.000000000 下午");
iniFile.SetValue( "section3", "END_TIME", "25-11月-14 02.55.00.000000000 下午 ");
iniFile.SetValue( "section3", "EVENT_ID", "3");
iniFile.SetValue( "section3", "AUTO_PROBE", "N"); //写入文件
iniFile.WriteFile(); // Lookup what we have now. 查询key个数.
for ( unsigned keyID = 0; keyID < iniFile.NumKeys(); ++keyID)
{
cout << "Key = " << iniFile.KeyName( keyID) << endl; //查询相应key的value个数.
for ( unsigned valueID = 0; valueID < iniFile.NumValues( keyID); ++valueID)
{
cout << " ValueName = " << iniFile.ValueName( keyID, valueID) <<
" Value = " << iniFile.GetValue( keyID, valueID) << endl;
}//end for valueID
}//end for keyID }


6、解析ini格式数据
//读取并解析iniFile
void ReadAndParseServerIni()
{
const string strConfigPath = string(g_pszServerConfig);
CIniFile iniFile; //初始化,设置ini文件路径.
iniFile.Initialize(strConfigPath); //读取文件.
iniFile.ReadFile(); /********************************************************
[listen]
listen_port=7200
********************************************************/
//获取相应Session为listen, key为listen_port 相应的value值.
int nPort = iniFile.GetValueI( "listen", "listen_port");
cout << nPort << endl; string strDBIp = iniFile.GetValue("Oracle_conn_info", "DBIP");
int iDBPort = iniFile.GetValueI("Oracle_conn_info", "DBPort");
string strDBSId = iniFile.GetValue("Oracle_conn_info", "DBSID");
string strDBUserName = iniFile.GetValue("Oracle_conn_info", "DBUserName");
string strDBPassword = iniFile.GetValue("Oracle_conn_info", "DBPassword"); cout << strDBIp << "\t" << iDBPort << "\t" << strDBSId << "\t" << strDBUserName << "\t" << strDBPassword << endl; //获取相应Session下的每一个key的名称。
string strPath = iniFile.GetValueName("EnvConfig",0);
string strTnsName = iniFile.GetValueName("EnvConfig",1);
string strNlsLang = iniFile.GetValueName("EnvConfig",2);
cout << strPath << "\t" << strTnsName << "\t" << strNlsLang << endl; //获取一个Session下的"key-value"对数。 cout << iniFile.NumValues("EnvConfig") << endl; }



7、ini格式数据解析源代码

8、执行结果示意:

后记:
1) 项目中发现公司中对.ini、.conf格式数据存在多个版本号的解析,大多都是前辈们自己写的,多半都是有大大小小的bug,不便于自己使用。而以上CIniFile使用简单,不是必需反复“造轮子”,能够非常方便移植到项目中。

2)已经对作者的代码发现问题做了几处小的修改。兴许发现Bug还会持续更新代码。

2014-7-5 pm18:59 思于家中床前

作者:铭毅天下

转载请标明出处,原文地址:http://blog.csdn.net/laoyang360/article/details/46764715

假设感觉本文对您有帮助,请点击‘顶’支持一下,您的支持是我坚持写作最大的动力,谢谢!


ini格式数据生成与解析具体解释的更多相关文章

  1. java中json数据生成和解析(复杂对象演示)

    1.json简单介绍 1.1 json是最流行和广泛通用的数据传输格式,简称JavaScript Object Notation,最早在JavaScript中使用. 1.2 举个例子,下面是一个jso ...

  2. 更加清晰的TFRecord格式数据生成及读取

    TFRecords 格式数据文件处理流程 TFRecords 文件包含了 tf.train.Example 协议缓冲区(protocol buffer),协议缓冲区包含了特征 Features.Ten ...

  3. Tensorflow 处理libsvm格式数据生成TFRecord (parse libsvm data to TFRecord)

    #写libsvm格式 数据 write libsvm     #!/usr/bin/env python #coding=gbk # ================================= ...

  4. XMLObject 简易xml格式接口数据生成和解析工具

    简单的请求封装,相当于封装了Book对象,但比Book对象参数更灵活 XMLObject xml = new XMLObject("book");xml.add("aut ...

  5. 解析json格式数据

    实现目标 读取文件中的json格式数据,一行为一条json格式数据.进行解析封装成实体类. 通过google的Gson对象解析json格式数据 我现在解析的json格式数据为: {",&qu ...

  6. C语言解析Ini格式文件

    引用别人的博文: http://www.open-open.com/lib/view/open1402278076447.html 可以解析 INI 格式的字符串.解析文件.保存到文件. 下面是头文件 ...

  7. iOS开发之JSON格式数据的生成与解析

    本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据? ...

  8. 转载 -- iOS开发之JSON格式数据的生成与解析

    本文将从四个方面对IOS开发中JSON格式数据的生成与解析进行讲解: 一.JSON是什么? 二.我们为什么要用JSON格式的数据? 三.如何生成JSON格式的数据? 四.如何解析JSON格式的数据? ...

  9. Python学习笔记:configparser(INI格式配置文件解析)

    在平时的开发中感觉INI格式的配置文件使用还是挺需要的,有时会使用一个单独的py来存放一些常量或者配置项,大多时候这样倒是挺好用的,但是如果某些配置项需要在运行时由用户来修改指定,比如很多app在关闭 ...

随机推荐

  1. QML之TextEdit

    TextEdit显示一个可编辑的,有格式的文本框.它也可以显示明文和富文本.例如:TextEdit {    width: 240    text: "<b>Hello</ ...

  2. ubuntu14.04安装wine以及国际版QQ

    公社(http://www.linuxidc.com/linux/2014-06/103768.htm)说: Wine (“Wine Is Not an Emulator” 的首字母缩写)是一个能够在 ...

  3. OTG线与普通USB线的区别

    转自OTG线与普通USB线的区别 USB数据线是我们常见的设备,OTG线作为近年来随着手机行业的快速发展,逐步进入了我们的日常使用范围.OTG线与普通USB线的有什么区别?       USB数据线用 ...

  4. h.264 scanning process for transform coefficients

    宏块在经过变换.量化后,得到大小为4x4或者8x8的矩阵,矩阵中的数据被称为transform coefficient levels.这些level在后面会被用于熵编码,因此我们需要把矩阵按照一定顺序 ...

  5. SQL servere 范式、事务

    一.数据库范式: 1.构造数据库必须遵循一定的规则.在关系数据库中,这种规则就是范式. 范式是符合某一种级别的关系模式的集合.数据库中的关系必须满足一定的要求,即满足不同的范式. 满足最低要求的范式是 ...

  6. Git简明手册

    文/AbnerKang(简书作者)原 文链接:http://www.jianshu.com/p/d7a7ba4f2341?utm_campaign=maleskine& utm_content ...

  7. 通过dblink impdp导入

    实验: 源数据库:10.5.129.160 dwhtest 需要导入的数据库:10.5.129.130 dwhtest 在10.5.129.130上创建DBLINK SQL> create  p ...

  8. Linq打印

    Method syntax: Enumerable.Range(1, 100).ToList().ForEach(Console.WriteLine); Query syntax: (from n i ...

  9. Linux学习笔记4——函数调用栈空间的分配与释放

    一.函数执行时使用栈空间作为自己的临时栈,3种方式决定编译器清空栈的方式:__stdcall. __fastcall.__cdecl 1.__stdcall表示每个调用者负责清空自己调用的函数的临时栈 ...

  10. word中MathType公式不能 二次编辑解决方案

    问题:当新建文档然后插入公式,此时可以利用mathtype进行编辑,保存后推出第二次打开,双击公式却发现不能编辑公式. 解决方案: ////////////////////////////////// ...