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. ThinkPHP URL模式和URL重写

    现在用的版本是TP3.1.3,这两天总是遇到NotFound的错误,解析路径错误,所以认真研究了一下手册,发现问题出在URL模式上面. URL模式 一般是使用U方法来生成路径,U方法的定义规则如下(方 ...

  2. Android 开机过程PMS分析

    12-13 12:25:05.595 3253 3253 SystemServer !@Boot: Start PackageManagerService pm/PackageManagerServi ...

  3. 2016030203 - 首次将内容推送到github中

    参考网址:http://www.cnblogs.com/plinx/archive/2013/04/08/3009159.html 和当你在你的github上创建repository后的提示信息如下 ...

  4. UIActionViewController 详解 iOS8

    iOS8推出了几个新的“controller”,主要是把类似之前的UIAlertView变成了UIAlertController,这不经意的改变,貌似把我之前理解的“controller”一下子推翻了 ...

  5. DELPHI TMS Advanced Charts 3.8.0.3 Full Source D6-XE6 控件分享

    仅供大家学习使用,请大家支持正版!! TMS Advanced Charts 3.8.0.3 Full Source D6-XE6 该控件用来画图标,压缩包里还有FOR INTRAWEB的版本 链接: ...

  6. 最近Get到的一些HTML/CSS中的小点(一)

    1.<em>和<strong>标签都是用来强调一段话中的某几个文字.<em>默认斜体,<strong>默认粗体.在强调语气上<strong> ...

  7. _CrtSetBreakAlloc简单内存泄漏检测方法,解决Detected memory leaks!问题

    我的环境是: XP SP2 . VS2003 最近在一个项目中,程序退出后都出现内存泄漏: Detected memory leaks! Dumping objects -> {98500} n ...

  8. Spring 4 and MyBatis Java Config

    TL;DR With the Java Config enhancements in Spring 4, you no longer need xml to configure MyBatis for ...

  9. 【HDOJ】2830 Matrix Swapping II

    简单DP. /* 2830 */ #include <iostream> #include <string> #include <map> #include < ...

  10. 【转】XCode快捷键

    原文网址:http://www.cnblogs.com/yjmyzz/archive/2011/01/25/1944325.html 1. 文件 CMD + N: 新文件CMD + SHIFT + N ...