dscjIni.h
#ifndef _DSCJ_INI_H
#define _DSCJ_INI_H
#define MAX_BUFFER_SIZE 255
class 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;
}