zoukankan      html  css  js  c++  java
  • ini格式数据生成与解析具体解释

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

    1、ini格式数据长啥样?

    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 << "	" << iDBPort << "	" << strDBSId << "	" << strDBUserName << "	" << strDBPassword << endl;
    
    	//获取相应Session下的每一个key的名称。
    	string strPath = iniFile.GetValueName("EnvConfig",0);
    	string strTnsName = iniFile.GetValueName("EnvConfig",1);
    	string strNlsLang = iniFile.GetValueName("EnvConfig",2);
    	cout << strPath << "	" << strTnsName << "	" << 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

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



  • 相关阅读:
    poj 2312 Battle City
    poj 2002 Squares
    poj 3641 Pseudoprime numbers
    poj 3580 SuperMemo
    poj 3281 Dining
    poj 3259 Wormholes
    poj 3080 Blue Jeans
    poj 3070 Fibonacci
    poj 2887 Big String
    poj 2631 Roads in the North
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5320589.html
Copyright © 2011-2022 走看看