.h 文件
#pragma once
#include "windows.h"
#include "tchar.h "
class CIniFile
{
private:
TCHAR m_szFileName[MAX_PATH]; // 需要打开的配置文件的文件名(在构造函数中被初始化)
public:
CIniFile(const TCHAR *pName);
BOOL GetBool(LPTSTR szSection,LPTSTR pszEntry,BOOL fDefault=FALSE);
DWORD GetInt(LPTSTR szSection,LPTSTR pszEntry, DWORD dwDefault=0);
BOOL GetStr(LPTSTR szSection,LPTSTR pszEntry, LPTSTR pszDefault, LPTSTR pszRet);
double GetFloat(LPTSTR szSection,LPTSTR pszEntry,float dDefault);
void WriteBool(LPTSTR szSection,LPTSTR pszEntry, BOOL f);
void WriteInt(LPTSTR szSection,LPTSTR pszEntry, DWORD dw);
void WriteStr(LPTSTR szSection,LPTSTR pszEntry, LPTSTR pszData);
void WriteFloat(LPTSTR szSection,LPTSTR pszEntry,float dDefault,LPTSTR szFormat=NULL);
};
.cpp文件
#include "stdafx.h"
#include <stdio.h>
#include "CIniFile.h"
CIniFile::CIniFile(const TCHAR *pName)
{
lstrcpy(m_szFileName,pName);
}
BOOL CIniFile::GetBool(LPTSTR szSection, LPTSTR pszEntry, BOOL fDefault)
{
return GetPrivateProfileInt(szSection, pszEntry, fDefault, m_szFileName) != 0;
}
DWORD CIniFile::GetInt(LPTSTR szSection,LPTSTR pszEntry, DWORD dwDefault)
{
return GetPrivateProfileInt(szSection, pszEntry, dwDefault, m_szFileName);
}
BOOL CIniFile::GetStr(LPTSTR szSection,LPTSTR pszEntry, LPTSTR pszDefault, LPTSTR pszRet)
{
int cch;
cch = GetPrivateProfileString(szSection, pszEntry, pszDefault, pszRet, MAX_PATH, m_szFileName);
if (cch == 0)
{
if (NULL == pszDefault)
return FALSE;
lstrcpy(pszRet, pszDefault);
return FALSE;
}
return TRUE;
}
double CIniFile::GetFloat(LPTSTR szSection,LPTSTR pszEntry,float dDefault)
{
TCHAR buf[MAX_PATH] = {0};
swprintf_s(buf,_T("%15lf"),dDefault);
GetPrivateProfileString(szSection, pszEntry, buf, buf, MAX_PATH, m_szFileName);
return _wtof(buf);
}
void CIniFile::WriteFloat(LPTSTR szSection,LPTSTR pszEntry,float dDefault,LPTSTR szFormat)
{
TCHAR buf[MAX_PATH] = {0};
static TCHAR *szFormat0=_T("%lf");
if(szFormat==NULL)
szFormat=szFormat0;
swprintf_s(buf,szFormat,dDefault);
WritePrivateProfileString(szSection, pszEntry, buf, m_szFileName);
}
void CIniFile::WriteStr(LPTSTR szSection,LPTSTR pszEntry, LPTSTR pszData)
{
WritePrivateProfileString(szSection, pszEntry, pszData, m_szFileName);
}
void CIniFile::WriteInt(LPTSTR szSection,LPTSTR pszEntry, DWORD dw)
{
TCHAR szData[MAX_PATH] = {0};
swprintf_s(szData, _T("%d"), dw);
WritePrivateProfileString(szSection, pszEntry, szData, m_szFileName);
}
void CIniFile::WriteBool(LPTSTR szSection,LPTSTR pszEntry, BOOL f)
{
WritePrivateProfileString(szSection, pszEntry, f ? _T("1") : _T("0"), m_szFileName);
}
使用范例:
CString path =_T("..\\sy\\system.ini");
CIniFile m_sysInitFile(Path);
int param ;
m_sysInitFile.writeInt(_T("section"),_T("param"),0);
param =m_sysInitFile.Getint(_T("section"),_T("param"),param);
param=static_cast<int>(param);