.h文件申明:
#pragma once
class CIniFile
{
public:
CIniFile();
virtual ~CIniFile();
//初始化INI
CIniFile(LPCTSTR szFileName);
//创建一个INI文件
void SetFileName(LPCTSTR szFileName);
//写操作
void WriteInteger(LPCTSTR szSection, LPCTSTR szKey, int nValue = 0);
void WriteFloat(LPCTSTR szSection, LPCTSTR szKey, float fValue = 0.0);
void WriteBoolean(LPCTSTR szSection, LPCTSTR szKey, BOOL bValue = FALSE);
void WriteString(LPCTSTR szSection, LPCTSTR szKey, LPCTSTR szValue = _T(""));
//读操作
int ReadInteger(LPCTSTR szSection, LPCTSTR szKey, int nDefaultValue = 0);
float ReadFloat(LPCTSTR szSection, LPCTSTR szKey, float fDefaultValue = 0.0);
BOOL ReadBoolean(LPCTSTR szSection, LPCTSTR szKey, BOOL bDefaultValue = FALSE);
CString ReadString(LPCTSTR szSection, LPCTSTR szKey, const LPCTSTR szDefaultValue = _T(""));
//删除节、ID键
void DeleteSection(LPCTSTR szSection);
void DeleteKey(LPCTSTR szSection, LPCTSTR szKey);
private:
TCHAR m_szFileName[MAX_PATH];
};
.cpp文件定义:
#include "pch.h"
#include "CIniFile.h"
#define _CRT_SECURE_NO_WARNINGS
CIniFile::CIniFile()
{
memset(m_szFileName, 0x00, MAX_PATH);
}
//初始化INI
CIniFile::CIniFile(LPCTSTR szFileName)
{
SetFileName(szFileName);
}
CIniFile::~CIniFile()
{
}
void CIniFile::SetFileName(LPCTSTR szFileName)
{
memset(m_szFileName, 0x00, MAX_PATH);
_tcscpy_s(m_szFileName, MAX_PATH, szFileName);
}
void CIniFile::WriteInteger(LPCTSTR szSection, LPCTSTR szKey, int nValue)
{
TCHAR szValue[MAX_PATH];
_stprintf_s(szValue, _T("%d"), nValue);
WritePrivateProfileString(szSection, szKey, szValue, m_szFileName);
}
void CIniFile::WriteFloat(LPCTSTR szSection, LPCTSTR szKey, float fValue)
{
TCHAR szValue[MAX_PATH];
_stprintf_s(szValue, _T("%f"), fValue);
WritePrivateProfileString(szSection, szKey, szValue, m_szFileName);
}
void CIniFile::WriteBoolean(LPCTSTR szSection, LPCTSTR szKey, BOOL bValue)
{
TCHAR szValue[MAX_PATH];
_stprintf_s(szValue, _T("%s"), bValue ? _T("True") : _T("False"));
WritePrivateProfileString(szSection, szKey, szValue, m_szFileName);
}
void CIniFile::WriteString(LPCTSTR szSection, LPCTSTR szKey, LPCTSTR szValue)
{
WritePrivateProfileString(szSection, szKey, szValue, m_szFileName);
}
int CIniFile::ReadInteger(LPCTSTR szSection, LPCTSTR szKey, int nDefaultValue)
{
int nResult = GetPrivateProfileInt(szSection, szKey, nDefaultValue, m_szFileName);
return nResult;
}
float CIniFile::ReadFloat(LPCTSTR szSection, LPCTSTR szKey, float fDefaultValue)
{
TCHAR szResult[MAX_PATH];
TCHAR szDefault[MAX_PATH];
float fResult;
_stprintf_s(szDefault, _T("%f"), fDefaultValue);
GetPrivateProfileString(szSection, szKey, szDefault, szResult, MAX_PATH, m_szFileName);
fResult = (float)_tstof(szResult);
return fResult;
}
BOOL CIniFile::ReadBoolean(LPCTSTR szSection, LPCTSTR szKey, BOOL bDefaultValue)
{
TCHAR szResult[MAX_PATH];
TCHAR szDefault[MAX_PATH];
bool bResult;
_stprintf_s(szDefault, _T("%s"), bDefaultValue ? _T("TRUE") : _T("FALSE"));
GetPrivateProfileString(szSection, szKey, szDefault, szResult, MAX_PATH, m_szFileName);
bResult = (_tcsicmp(szResult, _T("TRUE")) == 0) ? true : false;
return bResult;
}
CString CIniFile::ReadString(LPCTSTR szSection, LPCTSTR szKey, const LPCTSTR szDefaultValue)
{
CString strResult;
TCHAR* szResult = new TCHAR[MAX_PATH];
memset(szResult, 0x00, MAX_PATH);
GetPrivateProfileString(szSection, szKey,
szDefaultValue, szResult, MAX_PATH, m_szFileName);
strResult = szResult;
delete[] szResult;
szResult = NULL;
return strResult;
}
void CIniFile::DeleteSection(LPCTSTR szSection)
{
WritePrivateProfileString(szSection, NULL, NULL, m_szFileName);
}
void CIniFile::DeleteKey(LPCTSTR szSection, LPCTSTR szKey)
{
WritePrivateProfileString(szSection, szKey, NULL, m_szFileName);
}