国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院

首頁 > 編程 > C++ > 正文

C++讀取INI配置文件類實例詳解

2020-05-23 14:22:35
字體:
來源:轉載
供稿:網友
這篇文章主要介紹了C++讀取INI配置文件類的實現方法,需要的朋友可以參考下
 
 

本文以實例講解了C++讀取配置文件的方法。

一般情況下,我們都喜歡使用ini擴展名的文件作為配置文件,可以讀取及修改變量數值,也可以設置新的組,新的變量,本文的實例代碼一個是讀取INI的定義文件,另一個是CIniFile類實現文件,兩者結合,完美實現VC++對INI文件的讀寫。

用戶接口說明:在成員函數SetVarStr和SetVarInt函數中,當iType等于零,則如果用戶制定的參數在ini文件中不存在,則就寫入新的變量.當iType不等于零,則如果用戶制定的參數在ini文件中不存在,就不寫入新的變量,而是直接返回FALSE。程序代碼如下示,部分關鍵點有注釋加以說明:

/*=================================================================== 文件名:CIniFile類定義文件= 主要功能:可以讀取.修改變量數值,可以設置新的組,新的變量====================================================================*/#ifndef _CINIFILE_H_#define _CINIFILE_H_#include <afxtempl.h>//用戶接口說明:在成員函數SetVarStr和SetVarInt函數中,當iType等于零,則如果用戶制定的參數在ini文件中不存在,//則就寫入新的變量.當iType不等于零,則如果用戶制定的參數在ini文件中不存在,就不寫入新的變量,而是直接返回FALSE;class CIniFile{public: CIniFile(); virtual ~CIniFile();private: CIniFile(const CIniFile &); CIniFile & operator = (const CIniFile &);public: //創建函數 BOOL Create(const CString &strFileName); //得到變量整數型數值 BOOL GetVarInt(const CString &,const CString & ,int &); //得到變量字符串型數值 BOOL GetVarStr(const CString &,const CString & ,CString & ); //重新設置變量整數型數值 BOOL SetVarInt(const CString &,const CString & ,const int &,const int iType = 1); //重新設置變量字符串型數值 BOOL SetVarStr(const CString &,const CString &, const CString &,const int iType = 1);private: BOOL GetVar(const CString &,const CString &,CString &); BOOL SetVar(const CString &,const CString &,const CString &,const int iType = 1); int SearchLine(const CString &,const CString &);private: CArray FileContainer; BOOL bFileExsit; CStdioFile stfFile; CString strInIFileName;};#endifCIniFile.cpp文件內容: #include <afxtempl.h>#include "CIniFile.h"CIniFile::CIniFile():bFileExsit(FALSE){}CIniFile::~CIniFile(){if(bFileExsit){if(stfFile.Open(strInIFileName,CFile::modeCreate | CFile::modeWrite) && FileContainer.GetSize() > 0){CString strParam;for(int i = 0; i< FileContainer.GetSize();i++){strParam = FileContainer[i];// stfFile.WriteString(strParam);stfFile.WriteString(strParam+_T("/n"));}}stfFile.Close();}if(FileContainer.GetSize() > 0){FileContainer.RemoveAll();}}BOOL CIniFile::Create(const CString & strFileName){bFileExsit = FALSE;strInIFileName = strFileName;if(!stfFile.Open(strFileName,CFile::modeRead)){return bFileExsit;}CString strFileLine;while(bFileExsit = stfFile.ReadString(strFileLine)){if(bFileExsit == FALSE)return bFileExsit;FileContainer.Add(strFileLine);}stfFile.Close();bFileExsit = TRUE;return bFileExsit;}BOOL CIniFile::GetVar(const CString & strSection,const CString & strVarName,CString &strReturnValue){if(bFileExsit == FALSE || FileContainer.GetSize() < 0)return bFileExsit;int iLine = SearchLine(strSection,strVarName);if(iLine > 0){CString strParam = FileContainer[iLine -1];strReturnValue = strParam.Mid(strParam.Find(_T("=")) + 1);return TRUE;}return FALSE;}BOOL CIniFile::GetVarStr(const CString & strSection,const CString & strVarName,CString &strReturnValue){return(GetVar(strSection,strVarName,strReturnValue));}BOOL CIniFile::GetVarInt(const CString & strSection,const CString & strVarName,int & iValue){CString strReturnVar;if(GetVar(strSection,strVarName,strReturnVar)){strReturnVar.TrimLeft();int iLen = strReturnVar.GetLength();iValue = _tstoi(strReturnVar.GetBuffer(iLen));return TRUE;}return TRUE;}BOOL CIniFile::SetVar(const CString & strSection,const CString & strVarName,const CString & strVar,const int iType){if(bFileExsit == FALSE )return bFileExsit;if(FileContainer.GetSize() == 0){FileContainer.Add(_T("[") + strSection + _T("]"));FileContainer.Add(strVarName + _T("=") + strVar);return TRUE;}int i = 0;int iFileLines = (int)FileContainer.GetSize();//for(pInterator;pInterator != FileContainer.end();++pInterator)//{while(i< iFileLines){CString strValue = FileContainer.GetAt(i++);strValue.TrimLeft();if((strValue.Find(_T("[")) >=0) && (strValue.Find(strSection) >=0)){ while(i < iFileLines){CString strSectionList = FileContainer[i++];strSectionList.TrimLeft();if(strSectionList.Find(_T("//")) >=0)//找到注釋行continue;if(strSectionList.Find(strVarName)>=0)//找到{CString strParam = strVarName + "=" + strVar;//FileContainer.SetAt(i-1,strParam);FileContainer[i-1] = strParam;return TRUE;}if(strSectionList.Find(_T("["),0)>=0)//在原來文件的SECTION中,沒有相應的變量需要添加而且,這種情況下,下邊還有別的section{//處理流程是這樣的,首先把當前的數值依次向后移動,然后在當前位置加入新出現的數值if(iType !=0)return FALSE;CString strParam;FileContainer.Add(strParam);int iPre = (int)(FileContainer.GetSize()-1);while(iPre >= i){CString strBehind = FileContainer[iPre -1];FileContainer[iPre] = strBehind;iPre --;}strParam = strVarName + _T("=") + strVar;FileContainer.SetAt(i-1,strParam);return TRUE;}if(i == iFileLines && iType == 0){FileContainer.Add(strVarName + _T("=") + strVar);return TRUE;}}}}if(iType == 0){FileContainer.Add(_T("[") + strSection + _T("]"));FileContainer.Add(strVarName + _T("=") + strVar);}return TRUE;}BOOL CIniFile::SetVarStr(const CString & strSection,const CString & strVarName,const CString & strValue,const int iType){return SetVar(strSection,strVarName,strValue,iType);}BOOL CIniFile::SetVarInt(const CString & strSection,const CString & strVarName,const int & iValue,const int iType){CString strVar;strVar.Format(_T("%d"),iValue);return (SetVar(strSection,strVarName,strVar,iType));}int CIniFile::SearchLine(const CString & strSection,const CString & strVarName){if(FileContainer.GetSize() > 0){int i = 0;int iFileLines = (int)FileContainer.GetSize();while(i< iFileLines){CString strValue = FileContainer[i++];strValue.TrimLeft();if(strValue.Find(_T("[")) >=0 && strValue.Find(strSection,1)>=0){ while(i < iFileLines){CString strSectionList = FileContainer[i++];strSectionList.TrimLeft();if(strSectionList.Find(_T("//")) >=0)//找到注釋行continue;if(strSectionList.Find(strVarName)>=0)//找到{return i;}if(strSectionList.Find(_T("["),0) >= 0)//另外一個段落出現,尋找失敗{return -2;}}}}}return -1;}

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
国产激情自拍_国产9色视频_丁香花在线电影小说观看 _久久久久国产精品嫩草影院
国产三线在线| 青青草在线视频免费观看| 欧洲一区av| 不卡av免费观看| 超碰97在线免费观看| 久草.com| 91麻豆免费在线视频| 亚洲成a人v欧美综合天堂麻豆| 伊人网站在线| 成年网站免费入口在线观看| 国产精品69xx| 国产夫妻视频| 另类综合图区| 国产白浆在线| 久热国产在线视频| 国产福利在线播放麻豆| 小说区乱图片区| 国产午夜在线观看| sese一区| 一本免费视频| 国产精品日日爱| 亚洲а∨精品天堂在线| 国产日韩欧美一区二区三区视频| 亚洲最新永久观看在线| 国产丝袜在线| 国产精品探花在线| 在线激情网站| 精品欧美日韩一区二区| 国产男女av| 免费a级人成a大片在线观看| 精品美女在线观看视频在线观看 | 在线黄色国产电影| 欧美日韩不卡中文字幕在线| 国产极品一区二区三区| 国产卡一卡二卡三| 狠狠干在线视频| 欧美成人亚洲高清在线观看| 国产福利片在线| 国产日韩网站| 国产精品免费视频一区一| 国产免费电影网站入口| 青娱乐在线视频观看| 日本高清中文字幕| www.夜夜操.com| 轻轻色免费在线视频| 日本视频一二三区中文字幕| 日日夜夜中文字幕| 国产精品美女视频免费观看软件 | 中文字幕色视频| 午夜伦全在线观看| 国产无遮挡又黄又爽免费软件| 开心婷婷激情| 国产在线看片| 成年网站免费入口在线观看| 国产在线激情视频| 国产一级在线观看www色| 国产美女视频一区二区二三区| 可以免费看污视频的网站| 黄色av网站在线| 国产亚洲精品久久久久久青梅| 国产一级性片| 2019中文字幕视频| 在线午夜影院| 六月天色婷婷| 91久久精品国产性色| 人成在线免费视频| 懂色av一区| 中文资源在线官网| 超碰在线观看免费| 国产偷窥洗澡视频| 在线久久视频| 狠狠操天天操夜夜操| 国产激情在线| а√最新版地址在线天堂| 国产女呦网站| 免费中文字幕| 国产视频xxx| www.eeuss影院| 国产尤物视频在线| 精品女厕厕露p撒尿| 福利在线视频导航| av文字幕在线观看| 2018av男人天堂| 操人视频91| 在线免费看黄网站| 国产精品久久精品牛牛影视| 久久精品免视着国产成人| 精品一区二区在线欧美| 日本中文字幕在线2020| 欧美艹逼视频| 在线国产网址| 精品av中文字幕在线毛片| 91超碰在线免费| 国内精品一区视频| 日本视频一二三区中文字幕| 国产对白叫床清晰在线播放| 中文字幕在线免费视频| 天天av天天爱| 欧美日韩亚洲国内综合网| 6699久久国产精品免费| 国产偷倩在线播放| 国产精品蜜臀| 9999在线视频| 一个人看的www免费观看视频| 97在线免费| av一本在线| a视频免费看| 免费午夜一级| 黄色在线视频观看网站| 国产精品一二三区视频| 国产区av在线| 在线三级av| 欧美一级久久久久久久久大| 一本大道香蕉久久| 天天操夜夜做| 免费看黄视频网站| 成人av小说网| 国产精品视频流白浆免费视频| 国产xxxx做受性欧美88| 99久热re在线精彩视频| www.超级碰| 成在线人视频免费视频| 国产福利图片| 青青草原国产在线观看| 尤物网站在线| 依依成人在线| 国产乱子伦三级在线播放| 国产高清在线| av在线播放国产| 国产美女极品在线| 在线三级av| 国产乱xxⅹxx国语对白| av福利在线播放| 国产一级片在线| 任你操在线观看| 国产黄a三级三级三级av在线看| 四虎成人免费| 国产网站av| 久热国产在线视频| 精品极品三级久久久久| 九九热视频免费在线观看| 在线中文av| 国产精品一卡二卡三卡| 精品福利影院| 国产视频三区| 五月天天在线| 免费高清av| www.三区| 欧美日韩一区二区三区视视频| 精品国产免费观看一区| 国产网红在线观看| 国产三级在线| 国产女主播在线| 中文字幕在线资源| 国产美女性感在线观看懂色av| 日本亚洲精品| 四虎久久影院| sese在线视频| 国产95在线|亚洲| 国产国产国产国产国产国产 | 国产日韩欧美一区二区三区视频| 欧美性猛交xxxx免费看蜜桃| 精精国产xxxx视频在线| 国产色视频网站| 国产日本在线观看| 国产探花视频在线观看| 国产网红在线| 国产第一页在线视频 | 国产成人精品男人的天堂538| 1区2区3区在线| 国产一二三在线观看| 国产精品一区二三区| 国产性色视频| 999在线视频| 免费的黄网站在线观看| 成人午夜无人区一区二区| 国产美女性感在线观看懂色av| 国产美女在线播放| 国产精品冒白浆免费视频| 91高清国产| а√资源新版在线天堂| 九九热在线播放| 国产乱xxⅹxx国语对白| 尤物网址在线观看| 97一区二区三区| 黄色电影网站在线观看| 国产精品久久久久久久久鸭| 精品国内自产拍在线视频| 免费看成年人视频在线观看| 国产麻豆一区二区三区精品| 国产l精品国产亚洲区在线观看| 一级二级在线观看| 国产在线二区| 亚洲91av| 国产系列在线观看| 久久精品国产亚洲a∨麻豆| 国产黄色网页| 久久精品蜜桃| 在线亚洲不卡| 国产黄色片在线播放|