C++: Ini操作类

来源:互联网 发布:最火的网络歌曲 编辑:程序博客网 时间:2024/04/27 23:55
dscjIni.h
#ifndef _DSCJ_INI_H#define _DSCJ_INI_H#define MAX_BUFFER_SIZE 255class CIni{public:    CIni();    CIni(char* szFileName);     void Load(char* szFileName);     //读操作    int GetInteger(char* szSection, char* szKey, int iDefaultValue);    double GetDouble(char* szSection, char* szKey, double dDefaultValue);    bool GetBoolean(char* szSection, char* szKey, bool bDefaultValue);    char* GetString(const char* szSection, const char* szKey, char *sResult, int nSize, const char* szDefaultValue);    char* GetString2(char* szSection, char* szKey, const char* szDefaultValue);    //写操作    void SetInteger(char* szSection, char* szKey, int iValue);    void SetDouble(char* szSection, char* szKey, double dValue);    void SetBoolean(char* szSection, char* szKey, bool bValue);    void SetString(char* szSection, char* szKey, char* szValue);private:    char* GetString(char* szSection, char* szKey, const char* szDefaultValue);private:    char m_szFileName[MAX_BUFFER_SIZE];};#endif//_DSCJ_INI_H
dscjIni.cpp
#include "dscjIni.h"#include <iostream>#include <Windows.h>CIni::CIni(){    memset(m_szFileName, 0x00, MAX_BUFFER_SIZE);}CIni::CIni(char* szFileName){    Load(szFileName);}void CIni::Load(char* szFileName){    memset(m_szFileName, 0x00, MAX_BUFFER_SIZE);    memcpy(m_szFileName, szFileName, strlen(szFileName));}int CIni::GetInteger(char* szSection, char* szKey, int iDefaultValue){    int iResult = GetPrivateProfileInt(szSection, szKey, iDefaultValue, m_szFileName);     return iResult;}double CIni::GetDouble(char* szSection, char* szKey, double dDefaultValue){    char* szResult;    char szDefault[MAX_BUFFER_SIZE];    sprintf(szDefault, "%f", dDefaultValue);    szResult = GetString(szSection, szKey, szDefault);    return atof(szResult);}bool CIni::GetBoolean(char* szSection, char* szKey, bool bDefaultValue){    char* szResult;    char szDefault[MAX_BUFFER_SIZE];    sprintf(szDefault, "%s", bDefaultValue? "1" : "0");    szResult = GetString(szSection, szKey, szDefault);    return (strcmp(szResult, "1") == 0 || stricmp(szResult, "true") == 0);}char* CIni::GetString(char* szSection, char* szKey, const char* szDefaultValue){    static char szResult[MAX_BUFFER_SIZE];    return GetString(szSection, szKey, szResult, sizeof(szResult), szDefaultValue);}char* CIni::GetString2(char* szSection, char* szKey, const char* szDefaultValue){    static char szResult[MAX_BUFFER_SIZE];    return GetString(szSection, szKey, szResult, sizeof(szResult), szDefaultValue);}char* CIni::GetString(const char* szSection, const char* szKey, char *szResult, int nBufferSize, const char* szDefaultValue){    if(nBufferSize > MAX_BUFFER_SIZE) nBufferSize = MAX_BUFFER_SIZE;    memset(szResult, 0x00, nBufferSize);    GetPrivateProfileString(szSection, szKey, szDefaultValue, szResult, nBufferSize, m_szFileName);     return szResult;}void CIni::SetInteger(char* szSection, char* szKey, int iValue){    char szValue[MAX_BUFFER_SIZE];    sprintf(szValue, "%d", iValue);    SetString(szSection, szKey, szValue); }void CIni::SetDouble(char* szSection, char* szKey, double dValue){    char szValue[MAX_BUFFER_SIZE];    sprintf(szValue, "%f", dValue);    SetString(szSection, szKey, szValue); }void CIni::SetBoolean(char* szSection, char* szKey, bool bValue){    char szValue[MAX_BUFFER_SIZE];    sprintf(szValue, "%s", bValue ? "1" : "0");    SetString(szSection, szKey, szValue); }void CIni::SetString(char* szSection, char* szKey, char* szValue){    WritePrivateProfileString(szSection, szKey, szValue, m_szFileName);}

main.cpp

#include <iostream>#include "dscjIni.h"int main(int argc, char * argv[]){CIni iniWriter(".\\Logger.ini");iniWriter.SetString("Setting", "Name", "jianxx");iniWriter.SetInteger("Setting", "Age", 27);iniWriter.SetDouble("Setting", "Height", 1.82f);iniWriter.SetBoolean("Setting", "Marriage", false);CIni iniReader(".\\Logger.ini");char szName[MAX_BUFFER_SIZE];iniReader.GetString("Setting", "Name", szName, sizeof(szName), "");int iAge = iniReader.GetInteger("Setting", "Age", 25);double fltHieght = iniReader.GetDouble("Setting", "Height", 1.80f);bool bMarriage = iniReader.GetBoolean("Setting", "Marriage", true);std::cout<<"Name:"<<szName<<std::endl<<"Age:"<<iAge<<std::endl <<"Height:"<<fltHieght<<std::endl <<"Marriage:"<<bMarriage<<std::endl; return 1;   }