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. IS脚本学习

    OnFirstUIBefore:函数块用于第一安装应用时安装部件前所要完成的任务.一般在这里进行下列设: 1. 设置屏蔽 2. 显示欢迎信息,软件协议书或关于软件安装的其他说明信息 3. 从用户处获取 ...

  2. PinchArea QML Type

    PinchArea类型是在QtQuick 1.1中添加进去的.PinchArea是一个不可见的对象,常用在与一个可见对象连接在一起,为对应的可见对象提供手势操作.enabled属性被用来去设置绑定对象 ...

  3. matlab常用小函数(二)

    numel 元素个数 assert 表达式为假时输出某个字符串 int2str 整形转化为字符串型 numel(A) 返回A中的元素个数,A可以是任何的数据结构,如向量.矩阵.元胞.结构体等 asse ...

  4. Uva_11916 Emoogle Grid

    题目链接 题意: 有个N X M的棋盘, 有K种颜色, 有B个不可涂色的位置, 共有R种涂色方案. 1)每个可涂色的位置必须涂上一种颜色 2)不可涂色位置不能涂色 3)每个位置必须从K种颜色中选出一种 ...

  5. jQuery 表格插件25

    jQuery 表格插件可以让你创建各种各样的表格布局,表格布局是报纸和杂志中最常见的布局,现在的网站中也很常见,在这篇文章中,我向大家推荐25个jQuery 的表格插件,你可以任意控制表格的行和列,用 ...

  6. 判断是否为ie(包含ie11)

    if (!!window.ActiveXObject || "ActiveXObject" in window) { alert("IsIE"); }

  7. 2.5.4 使用popupWindow

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout ...

  8. Autofac 之 基于 Castle DynamicProxy2 的 Interceptor 功能

    Autofac 结合 Castle DynamicProxy2 功能        Autofac 不仅作为轻量级高效的 IoC 容器,而且还能很好的与 Castle.DynamicProxy2 结合 ...

  9. 2015第45周五IE11实用开发工具摘录及设置IE缓存

    UI响应工具的作用 UI响应工具顾名思义就是查看UI响应时间的工具,通过这个工具可以帮助我们确定应用中的哪些组件占用了多少CPU时间,让我们之后可以更有针对性的进行优化,从而最大限度地改善应用性能,同 ...

  10. Shadow Register 是什么?

    ARM处理器有个Shadow Register的概念,查了很多资料,语焉不详,究竟是什么意思呢? 这其实是个和硬件有关的概念. 有些register是2层的,第一层是供CPU访问,第二层供Hw访问. ...