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

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值