• 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

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



  • 相关阅读:
    移动端html的overflow:hidden属性失效问题
    js获取url传递参数,js获取url?号后面的参数
    zoom和transform:scale的区别
    css媒体查询来书写二倍图三倍图设置
    ajax和promise的结合使用
    react-router 嵌套路由 内层route找不到
    antd中按需加载使用react-app-rewired报错
    ts+antd报错error TS2605: JSX element type Xxx is not a constructor function for JSX elements
    在taro中跳转页面的时候执行两遍componentDidMount周期的原因和解决方法
    HDU 4602 Partition (矩阵乘法)
  • 原文地址:https://www.cnblogs.com/lcchuguo/p/5320589.html
Copyright © 2020-2023  润新知