XSConfig.h
#pragma once
class CXSConfig
{
public:
//单例模式
static CXSConfig* getInstance()
{
static CXSConfig OnlyInstance;
return &OnlyInstance;
}
//加载配置文件
bool LoadConfig(LPCTSTR szConfigPathName);
//获取
CString getName(){ return m_name; }
int getAge(){ return m_age; }
double getHeight(){ return m_height; }
bool getMarried(){ return m_bMarried; }
COleDateTime getBirthday(){ return m_birthday; }
//写入
void setName(const CString& strName);
void setAge(const int& nAge);
void setHeight(const double& dHeight);
void setMarried(const bool& bMarried);
void setBirthday(const COleDateTime& time);
private:
CXSConfig();
~CXSConfig();
private:
CString m_strCofigPathName;//配置文件路径
//配置项
CString m_name;
int m_age;
double m_height;
bool m_bMarried;
COleDateTime m_birthday;
};
XSConfig.cpp
#include "stdafx.h"
#include "XSConfig.h"
//配置文件示例
//[STUDENTINFO]
//Name = Li Lei
//Age = 18
//Height = 180.0
//Married = 0
//Birthday = 2003 - 06 - 28 17:40 : 36
CXSConfig::CXSConfig() :
m_name(_T("")),
m_age(0),
m_height(0.0),
m_bMarried(false)
{
}
CXSConfig::~CXSConfig()
{
}
bool CXSConfig::LoadConfig(LPCTSTR szConfigPathName)
{
HANDLE hFile = ::CreateFile(szConfigPathName, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, NULL);
if (INVALID_HANDLE_VALUE == hFile)
{
return false;
}
::CloseHandle(hFile);
m_strCofigPathName = CString(szConfigPathName);
CString strAppName = _T("STUDENTINFO");
TCHAR tchText[1024] = { 0 };
CString strKey;
//取字符串
strKey = _T("Name");
GetPrivateProfileString(strAppName.GetString(), strKey.GetString(), _T(""), tchText, 1024, m_strCofigPathName.GetString());
m_name = CString(tchText);
//取int值
memset(tchText, 0, 1024);
strKey = _T("Age");
m_age = GetPrivateProfileInt(strAppName.GetString(), strKey.GetString(), 0, m_strCofigPathName.GetString());
//取double值
memset(tchText, 0, 1024);
strKey = _T("Height");
GetPrivateProfileString(strAppName.GetString(), strKey.GetString(), _T("0.0"), tchText,1024,m_strCofigPathName.GetString());
m_height = _tstof(tchText);
//取bool值
memset(tchText, 0, 1024);
strKey = _T("Married");
m_bMarried = (GetPrivateProfileInt(strAppName.GetString(), strKey.GetString(), 0, m_strCofigPathName.GetString())) ? true : false;
//取时间值
memset(tchText, 0, 1024);
strKey = _T("Birthday");
GetPrivateProfileString(strAppName.GetString(), strKey.GetString(), _T("0000-00-00 00:00:00"), tchText, 1024, m_strCofigPathName.GetString());
m_birthday.ParseDateTime(tchText);
return true;
}
void CXSConfig::setName(const CString& strName)
{
m_name = strName;
CString strAppName = _T("STUDENTINFO");
CString strKey = _T("Name");
::WritePrivateProfileString(strAppName.GetString(), strKey.GetString(), strName.GetString(), m_strCofigPathName.GetString());
}
void CXSConfig::setAge(const int& nAge)
{
m_age = nAge;
CString strAppName = _T("STUDENTINFO");
CString strKey = _T("Age");
CString write;
write.Format(_T("%d"), nAge);
::WritePrivateProfileString(strAppName.GetString(), strKey.GetString(), write.GetString(), m_strCofigPathName.GetString());
}
void CXSConfig::setHeight(const double& dHeight)
{
m_height = dHeight;
CString strAppName = _T("STUDENTINFO");
CString strKey = _T("Height");
CString write;
write.Format(_T("%.2f"), dHeight);
::WritePrivateProfileString(strAppName.GetString(), strKey.GetString(), write.GetString(), m_strCofigPathName.GetString());
}
void CXSConfig::setMarried(const bool& bMarried)
{
m_bMarried = bMarried;
int value = bMarried ? 1 : 0;
CString strAppName = _T("STUDENTINFO");
CString strKey = _T("Married");
CString write;
write.Format(_T("%d"), value);
::WritePrivateProfileString(strAppName.GetString(), strKey.GetString(), write.GetString(), m_strCofigPathName.GetString());
}
void CXSConfig::setBirthday(const COleDateTime& time)
{
m_birthday = time;
CString strAppName = _T("STUDENTINFO");
CString strKey = _T("Birthday");
CString write;
write.Format(_T("%04d-%02d-%02d %02d:%02d:%02d"),
time.GetYear(),
time.GetMonth(),
time.GetDay(),
time.GetHour(),
time.GetMinute(),
time.GetSecond());
::WritePrivateProfileString(strAppName.GetString(), strKey.GetString(), write.GetString(), m_strCofigPathName.GetString());
}
配置文件:
[STUDENTINFO]
Name=李雷
Age=18
Height=180.0
Married=0
Birthday=2003-06-28 17:40:36