inifile.cpp
来自「3D赛车游戏源代码-用Visual Studio 2005」· C++ 代码 · 共 93 行
CPP
93 行
#include "StdAfx.h"
#include "IniFile.h"
//-------------------------------------------------------------------------------
// 一些常数定义
//-------------------------------------------------------------------------------
#define MAX_SECTION 260 // Section最大长度
#define MAX_KEY 260 // KeyValues最大长度
#define MAX_ALLSECTIONS 256 // 所有Section的最大长度
#define MAX_ALLKEYS 256 // 所有KeyValue的最大长度
//-------------------------------------------------------------------------------
// 构造函数
//-------------------------------------------------------------------------------
CIniFile::CIniFile()
{
// 初始化配置文件
GetModuleFileName(NULL, m_szFileName, MAX_PATH);
lstrcpy(m_szFileName + lstrlen(m_szFileName) - 4, ".ini");
}
//-------------------------------------------------------------------------------
// 打开ini文件(设置路径)
//-------------------------------------------------------------------------------
bool CIniFile::Open(const char *filename)
{
strncpy(m_szFileName, filename, sizeof(m_szFileName));
// 检查文件是否存在
DWORD dwFlag = GetFileAttributes((LPCTSTR)m_szFileName);
// 文件或者路径不存在,返回FALSE
if (0xFFFFFFFF == dwFlag)
return false;
// 路径是目录,返回FALSE
if (FILE_ATTRIBUTE_DIRECTORY & dwFlag)
return false;
return true;
}
//-------------------------------------------------------------------------------
// 检查section(节)是否存在
//-------------------------------------------------------------------------------
bool CIniFile::SectionExist(const char *section)
{
char buffer[MAX_SECTION];
DWORD ret = GetPrivateProfileString(section, NULL, "", buffer,
sizeof(buffer), m_szFileName);
return ret > 0;
}
//-------------------------------------------------------------------------------
// 读取指定section下key的value(字符串)
//-------------------------------------------------------------------------------
const char * CIniFile::ReadString(const char *section, const char *key, const char *defaultvalue)
{
static char key_buffer[MAX_KEY];
DWORD ret = GetPrivateProfileString(section, key, defaultvalue, key_buffer, sizeof(key_buffer), m_szFileName);
return key_buffer;
}
//-------------------------------------------------------------------------------
// 设置指定section下key的value(字符串),不存在则创建
//-------------------------------------------------------------------------------
bool CIniFile::WriteString(const char *section, const char *key, const char *value)
{
return WritePrivateProfileString(section, key, value, m_szFileName) > 0;
}
//-------------------------------------------------------------------------------
// 删除指定section下的key及其value
//-------------------------------------------------------------------------------
bool CIniFile::DeleteKey(const char *section, const char *key)
{
return WritePrivateProfileString(section, key, NULL, m_szFileName) > 0;
}
//-------------------------------------------------------------------------------
// 删除指定section及其所有的key及value
//-------------------------------------------------------------------------------
bool CIniFile::DeleteSection(const char *section)
{
return WritePrivateProfileString(section, NULL, NULL, m_szFileName) > 0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?