亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

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

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

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

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

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

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

/*=================================================================== 文件名:CIniFile類定義文件= 主要功能:可以讀取.修改變量數(shù)值,可以設置新的組,新的變量====================================================================*/#ifndef _CINIFILE_H_#define _CINIFILE_H_#include <afxtempl.h>//用戶接口說明:在成員函數(shù)SetVarStr和SetVarInt函數(shù)中,當iType等于零,則如果用戶制定的參數(shù)在ini文件中不存在,//則就寫入新的變量.當iType不等于零,則如果用戶制定的參數(shù)在ini文件中不存在,就不寫入新的變量,而是直接返回FALSE;class CIniFile{public: CIniFile(); virtual ~CIniFile();private: CIniFile(const CIniFile &); CIniFile & operator = (const CIniFile &);public: //創(chuàng)建函數(shù) BOOL Create(const CString &strFileName); //得到變量整數(shù)型數(shù)值 BOOL GetVarInt(const CString &,const CString & ,int &); //得到變量字符串型數(shù)值 BOOL GetVarStr(const CString &,const CString & ,CString & ); //重新設置變量整數(shù)型數(shù)值 BOOL SetVarInt(const CString &,const CString & ,const int &,const int iType = 1); //重新設置變量字符串型數(shù)值 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{//處理流程是這樣的,首先把當前的數(shù)值依次向后移動,然后在當前位置加入新出現(xiàn)的數(shù)值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)//另外一個段落出現(xiàn),尋找失敗{return -2;}}}}}return -1;}

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
欧美系列一区| 日本一区二区精品视频| 欧美一级淫片videoshd| 91香蕉视频污版| k8久久久一区二区三区| 亚洲伦理一区| 成人精品一区二区三区四区| 精品久久久久久久免费人妻| 国产主播在线看| 美女精品一区最新中文字幕一区二区三区| gratisvideos另类灌满| 色视频网站在线| 亚洲女同志亚洲女同女播放| 黄视频在线观看网站| 日韩hd视频在线观看| 国产精品视频白浆合集| aaaaaa毛片| 奇米精品一区二区三区在线观看一| 国产激情视频一区二区在线观看| 亚洲人挤奶视频| 里番在线播放| 中文字幕日韩精品有码视频| 精品久久97| 手机看片福利日韩| 日韩av一区二区在线观看| 亚洲综合久久av| 日韩av在线一区二区| 18性欧美xxxⅹ性满足| 真实的国产乱xxxx在线91| 成人午夜在线视频一区| 日韩美女视频在线观看| 久久国产精品毛片| 狂野欧美性猛交xxxx巴西| 欧美日韩国产片| 国产精品每日更新在线播放网址| 激情五月色综合国产精品| 欧美日韩国产影片| 精品国产乱码久久久久久鸭王1| 婷婷社区五月天| 久久九九国产视频| 青青草原av| 久久66热re国产毛片基地| 日韩电影免费在线| 激情婷婷久久| 每日在线观看av| 国产69精品久久久久9| 亚洲综合一区二区不卡| av二区三区| 国产精品久久久| 精品国产123区| 亚洲激情77| 超碰97人人做人人爱少妇| 国产激情在线观看| 亚洲午夜精品在线观看| 国产真实乱在线更新| 久草网站在线观看| 国产youjizz在线| 一级片一区二区三区| 欧美壮男野外gaytube| 精品激情国产视频| 日韩少妇与小伙激情| 日韩欧美一区二区视频| 国产va免费精品高清在线观看| 欧美日本免费| 国产精品69一区二区三区| 电影在线观看一区二区| 久久久久久久久久码影片| 日韩经典一区| 在线播放一区二区精品视频| 一区二区免费播放| 日本一区二区三区播放| 国产老熟女伦老熟妇露脸| 欧美一区二区影视| 亚洲国产视频在线| 中文字幕av日韩精品| 国产午夜精品一区二区理论影院| 日韩av有码| 国模私拍视频在线播放| 欧美日韩国产网站| 2023国产精品久久久精品双| 日韩你懂的电影在线观看| av电影在线播放高清免费观看| 三年片大全在线观看大全有哪些| 成人精品美女隐私视频| 国产精品综合av一区二区国产馆| 国产91免费看片| 蜜臀尤物一区二区三区直播| 久久国产视频网站| 国产精品成人一区二区| 日本黄色免费在线| 欧美日韩高清一区二区三区| 91网页版在线登录入口| 亚洲色图首页| 欧美精品自拍视频| 精品国产一区二区在线观看| 国产精品视频第一页| 国产精品国产三级国产a| 亚洲黄页视频免费观看| 成人av播放| 国产一区免费视频| 久久久高清视频| 国产精品视频免费在线| 欧美人伦禁忌dvd放荡欲情| 国产精品美女xx| 中国精品18videos性欧美| 国产成人亚洲精品狼色在线| 国产乱码精品一区二区三区不卡| 日韩欧美国产电影| av日韩一区二区三区| 欧美第一视频| 亚洲欧洲韩国日本视频| 亚欧日韩另类中文欧美| 波多野结衣一区二区三区| √天堂资源地址在线官网| 欧美国产精品va在线观看| 91夜夜蜜桃臀一区二区三区| 免费成人动漫| 黄页在线观看视频| 久久xxx视频| 国产女人精品视频| 国产激情91久久精品导航| av电影天堂一区二区在线观看| 高清一区二区三区| 毛片视频免费播放| 亚洲第一页视频| 911亚洲精品| 超碰97在线免费| 欧美爱爱视频| 国产成人无码专区| 欧美日韩亚洲综合一区二区三区激情在线| 中文字幕乱码人妻综合二区三区| 国产亚洲视频在线观看| 久久久久麻豆v国产精华液好用吗| 欧美性xxxx69| 激情欧美日韩一区| 中文字幕免费高清视频| 99精品视频一区二区| 国产美女视频一区二区| 午夜精品久久久久久久男人的天堂| 日本最新高清不卡中文字幕| 欧美性受xxxx黑人xyx性爽| 无码人妻精品中文字幕| 亚洲人成电影网站色mp4| a级黄色毛片| 日韩精品一区二区三区在线视频| 国产亚洲精品久久久久久777| 凹凸日日摸日日碰夜夜| 成人激情开心网| 国产精品丝袜一区二区三区| a视频在线看| 欧美一级特黄aaaaaa大片在线观看| 精品不卡一区二区三区| 欧美日韩成人在线| 天堂男人av| 欧美日韩中文字幕精品| 精品久久久久久久大神国产| 97福利一区二区| 国产亚洲成人精品| 亚洲AV无码片久久精品| 欧美在线3区| 卡一精品卡二卡三网站乱码| 成人区精品一区二区| 成人国产激情在线| 久久国产精品区| 五月婷婷丁香网| 992tv成人免费影院| 久久综合九色| 国产麻豆综合视频在线观看| 2020国产精品久久精品美国| 国产91网红主播在线观看| 精品国产综合区久久久久久| 日韩欧美国产激情| 欧美黑人乱大交| 久久91视频| 希岛爱理中文字幕| 免费网站看v片在线a| 18成人免费观看视频| 国产精品一区二区入口九绯色| 亚洲视频一二区| 国产一区二区精品久久99| 91看片淫黄大片一级| 超碰在线人人爱| 成人国产亚洲欧美成人综合网| 一本到在线视频| 毛片在线播放a| 欧美中文字幕一区二区三区亚洲| 日韩欧美亚洲另类制服综合在线| 久久精品国产一区二区三区免费看| 免费看日韩av| 精品一区二区三区视频在线观看| 亚洲三级电影全部在线观看高清| 天堂…中文在线最新版在线| 免费看欧美美女黄的网站| 99久久99久久精品国产片桃花| 99久久www免费| 日韩久久精品一区| 精品日本12videosex| 亚洲精品666| 91精品久久久| 在线观看日韩羞羞视频| 无码av免费精品一区二区三区| 久久久久久久久久久久久久久国产| 任你弄在线视频免费观看| 午夜精品久久久99热福利| 成人午夜福利一区二区| 欧美一区二区三区四区在线| 欧美aaaaaaa| 日韩一区二区在线免费| 国产成人在线免费视频| 亚洲人线精品午夜| 国产精品一区二区三区视频网站| 91精品久久久久久久91蜜桃| 西西裸体人体做爰大胆久久久| 网红女主播少妇精品视频| 久久久久久久久久婷婷| 久久影视电视剧免费网站清宫辞电视| www.久久草.com| 国产人成视频在线观看| 欧美美女bb生活片| 精品街拍一区二区| 搡老女人一区二区三区视频tv| 国产精品久久欧美久久一区| 午夜欧美不卡精品aaaaa| 亚洲国产精品一区二区久| 伊人久久大香线蕉综合网站| 国产成人在线一区二区| 老女人av在线| 91精品国产综合久| 日韩大片一区二区| 久久久久久三级| 国产 欧美 精品| 精品中文视频在线| 中国一级片在线观看| 精品国产视频在线| 中文字幕有码在线视频| 国产欧美日韩在线一区二区| 国产精品无码专区av免费播放| 91成人国产在线观看| 丰满熟女一区二区三区| 国产a∨精品一区二区三区仙踪林| 精品一区在线看| 欧美日韩直播| 中文字幕在线三区| 91看片淫黄大片一级在线观看| 乳奴隷乳フ辱julia在线观看| 日韩国产精品久久久久久亚洲| 国产精品一区二区6| 欧美一区二区三区性视频| 国内毛片毛片毛片毛片毛片| 国产精品视频专区| 不卡视频一二三| 国产精品一级黄片| 性欧美video另类hd3| 国模精品一区二区三区色天香| 国产精品香蕉在线观看| 欧美日韩中文字幕在线观看| 国产高清在线一区| 久久久久无码国产精品一区李宗瑞| 久久精品97| 亚州精品国产| 日本视频在线观看免费| 久久久亚洲成人| 天堂在线视频网站| 福利视频一区二区三区四区| 久久久久久不卡| 日本电影在线观看网站| 欲香欲色天天天综合和网| 精品国产三级电影在线观看| 亚洲区欧洲区| 美女被啪啪一区二区| 色诱女教师一区二区三区| 四虎成人精品一区二区免费网站| 欧美日韩国产精品激情在线播放| 日本激情小视频| 无码精品视频一区二区三区| 日韩欧美在线精品| 久久无码人妻一区二区三区| 欧美激情成人在线视频| 欧美肉体xxxx裸体137大胆| 国产高潮又爽又无遮挡又免费| 日本在线电影一区二区三区| 美日韩丰满少妇在线观看| 国语自产精品视频在线看抢先版图片| 国产一区二区在线免费| 女同性一区二区三区人了人一| 成人拍拍拍免费视频网站| 一级毛片免费播放| 乱一区二区三区在线播放| a视频v在线| 天天干,夜夜爽| 亚洲精品国产精品国自产观看| 国内精品久久久久久影院老狼| 在线播放日韩专区| 国产精品69xx| 一个人看的www视频免费观看| 黄一区二区三区| 国产亚洲高清视频| 人妻换人妻a片爽麻豆| 久久久久成人精品无码中文字幕| 成人三级伦理片| 天天操夜夜操视频| 日韩电影中文 亚洲精品乱码| 色鬼7777久久| 女人被狂躁到高潮视频免费网站| 人妻av中文系列| 亚洲精品综合在线| 菠萝蜜影院一区二区免费| 日韩激情电影| 国产麻豆视频网站| 在线午夜影院| 国内揄拍国内精品| 亚洲精品久久久久久久久| 精品人妻一区二区乱码| 欧美三级精品| av播放在线| 色综合97天天综合网| 成人18网站| 国产精品国产自产拍高清av王其| 九九在线精品视频| 成人在线免费小视频| 中文字幕一区在线播放| 九色91在线视频| 色婷婷亚洲综合| 午夜国产精品理论片久久影院| 激情综合网最新| 一二三四在线观看免费高清中文在线观看| 精品久久久久久久久久久久包黑料| 欧美丝袜美女中出在线|