MFC Ini文件操作(修正版)

.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);
}

猜你喜欢

转载自blog.csdn.net/u012156872/article/details/119374006