C++读写INI配置文件的类实例
发布时间:2020-12-16 03:31:40 所属栏目:百科 来源:网络整理
导读:本篇章节讲解C++读写INI配置文件的类。供大家参考研究。具体如下: 1. IniReader.h文件: #ifndef INIREADER_H#define INIREADER_H#include windows.hclass CIniReader{public: CIniReader(LPCTSTR szFileName); int ReadInteger(LPCTSTR szSection,
本篇章节讲解C++读写INI配置文件的类。分享给大家供大家参考。具体如下: 1. IniReader.h文件: #ifndef INIREADER_H #define INIREADER_H #include <windows.h> class CIniReader { public: CIniReader(LPCTSTR szFileName); int ReadInteger(LPCTSTR szSection,LPCTSTR szKey,int iDefaultValue); float ReadFloat(LPCTSTR szSection,float fltDefaultValue); bool ReadBoolean(LPCTSTR szSection,bool bolDefaultValue); LPTSTR ReadString(LPCTSTR szSection,LPCTSTR szDefaultValue); private: TCHAR m_szFileName[255]; }; #endif //INIREADER_H 2. IniReader.cpp文件: #include "IniReader.h" #include <iostream> #include <windows.h> CIniReader::CIniReader(LPCTSTR szFileName) { memset(m_szFileName,0x00,sizeof(m_szFileName)); memcpy(m_szFileName,szFileName,_tcslen(szFileName)*sizeof(TCHAR)); } int CIniReader::ReadInteger(LPCTSTR szSection,int iDefaultValue) { int iResult = GetPrivateProfileInt(szSection,szKey,iDefaultValue,m_szFileName); return iResult; } float CIniReader::ReadFloat(LPCTSTR szSection,float fltDefaultValue) { TCHAR szResult[255]; TCHAR szDefault[255]; float fltResult; _stprintf_s(szDefault,255,TEXT("%f"),fltDefaultValue); GetPrivateProfileString(szSection,szDefault,szResult,m_szFileName); fltResult = (float)_tstof(szResult); return fltResult; } bool CIniReader::ReadBoolean(LPCTSTR szSection,bool bolDefaultValue) { TCHAR szResult[255]; TCHAR szDefault[255]; bool bolResult; _stprintf_s(szDefault,TEXT("%s"),bolDefaultValue? TEXT("True") : TEXT("False")); GetPrivateProfileString(szSection,m_szFileName); bolResult = (_tcscmp(szResult,TEXT("True")) == 0 || _tcscmp(szResult,TEXT("true")) == 0) ? true : false; return bolResult; } LPTSTR CIniReader::ReadString(LPCTSTR szSection,LPCTSTR szDefaultValue) { LPTSTR szResult = new TCHAR[255]; memset(szResult,sizeof(szResult)); GetPrivateProfileString(szSection,szDefaultValue,m_szFileName); return szResult; } 3. IniWriter.h文件: #ifndef INIWRITER_H #define INIWRITER_H #include <windows.h> class CIniWriter { public: CIniWriter(LPCTSTR szFileName); void WriteInteger(LPCTSTR szSection,int iValue); void WriteFloat(LPCTSTR szSection,float fltValue); void WriteBoolean(LPCTSTR szSection,bool bolValue); void WriteString(LPCTSTR szSection,LPCTSTR szValue); private: TCHAR m_szFileName[255]; }; #endif //INIWRITER_H 4. IniWriter.cpp文件: #include "IniWriter.h" #include <iostream> #include <windows.h> CIniWriter::CIniWriter(LPCTSTR szFileName) { memset(m_szFileName,_tcslen(szFileName)*sizeof(TCHAR)); } void CIniWriter::WriteInteger(LPCTSTR szSection,int iValue) { TCHAR szValue[255]; _stprintf_s(szValue,TEXT("%d"),iValue); WritePrivateProfileString(szSection,szValue,m_szFileName); } void CIniWriter::WriteFloat(LPCTSTR szSection,float fltValue) { TCHAR szValue[255]; _stprintf_s(szValue,fltValue); WritePrivateProfileString(szSection,m_szFileName); } void CIniWriter::WriteBoolean(LPCTSTR szSection,bool bolValue) { TCHAR szValue[255]; _stprintf_s(szValue,bolValue ? TEXT("True") : TEXT("False")); WritePrivateProfileString(szSection,m_szFileName); } void CIniWriter::WriteString(LPCTSTR szSection,LPCTSTR szValue) { WritePrivateProfileString(szSection,m_szFileName); } 5. main.cpp文件: #if defined(UNICODE) || defined(_UNICODE) #define tcout std::wcout #else #define tcout std::cout #endif #include <iostream> #include <windows.h> #include "IniWriter.h" #include "IniReader.h" int _tmain(int argc,_TCHAR* argv[]) { CIniWriter iniWriter(TEXT(".initest.ini")); iniWriter.WriteString(TEXT("Setting"),TEXT("Name"),TEXT("jianxx")); iniWriter.WriteInteger(TEXT("Setting"),TEXT("Age"),27); iniWriter.WriteFloat(TEXT("Setting"),TEXT("Height"),1.82f); iniWriter.WriteBoolean(TEXT("Setting"),TEXT("Marriage"),false); CIniReader iniReader(TEXT(".initest.ini")); LPTSTR szName = iniReader.ReadString(TEXT("Setting"),TEXT("")); int iAge = iniReader.ReadInteger(TEXT("Setting"),25); float fltHieght = iniReader.ReadFloat(TEXT("Setting"),1.80f); bool bMarriage = iniReader.ReadBoolean(TEXT("Setting"),true); tcout<<"Name:"<<szName<<std::endl <<"Age:"<<iAge<<std::endl <<"Height:"<<fltHieght<<std::endl <<"Marriage:"<<bMarriage<<std::endl; delete szName; return 1; } 希望本文所述对大家的C++程序设计有所帮助。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |