C++: Ini操作类

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;   
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值