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. Ubuntu系统、开发环境配置

    在VMware10下安装成功了Ubuntu 13.10桌面版,刚安装完需要配置很多内容,下面为记录: 1. 更新源: 想了解更新地址的可以查看apt-get的源列表文件 $ sudo gedit /e ...

  2. 中国天气网接口返回json格式分析及接口(XML、图片接口)说明

    实时天气: city        "北京"//城市 cityid      "101010100"//城市编码 temp        "17&qu ...

  3. maven web项目不能创建src/main/java等文件夹的问题

    eclipse创建maevn web项目,在选择maven_archetype_webapp原型后,默认只有src/main/resources这个Source Floder.  按照maven目录结 ...

  4. iOS:NAV+TABLE结合

    功能:点击列表项,用列表字符串作为参数创建一个新视图,新视图默认可以有一个BACK按钮回到上一个视图 // // main.m // Hello // // Created by lishujun o ...

  5. JQUERY 插件开发——LAZYLOADIMG(预加载和延迟加载图片)

    开发背景 本插件开发是近期写的最后一个插件了,接下来我想把最近研究的redis最为一个系列阐述下.当然Jquery插件开发是我个人爱好,我不会停止,在将来的开发中我会继续完善,当然也会坚持写这个系列的 ...

  6. codeforces C. Little Pony and Expected Maximum

    题意:一个筛子有m个面,然后扔n次,求最大值的期望; 思路:最大值为1 有1种,2有2n-1种,  3有3n -2n 种   所以为m的时有mn -(m-1)n 种,所以分别求每一种的概率,然后乘以这 ...

  7. 【HDU3341】 Lost's revenge (AC自动机+状压DP)

    Lost's revenge Time Limit: 5000MS Memory Limit: 65535KB 64bit IO Format: %I64d & %I64u Descripti ...

  8. WebSocket能干啥

    ------这东西到底有什么用途,仔细看了说明,还是不明所以.楼上几位能不能介绍一下实际使用的场景?? 1.可以实现 服务器端(delphi&lazarus@win)<->手机端  ...

  9. oracle 安装, oem 不能正常使用,em安装失败、找不到dbconsole服务

    OracleDBControl启动失败Unable to determine local host from URL REPOSITORY_URL=http://your-url.co 通过emca创 ...

  10. 【HDOJ】2589 正方形划分

    暴力DFS /* 2589 */ #include <cstdio> #include <cstring> #include <cstdlib> #define M ...