📄 inireader.h
字号:
#ifndef CONFIG_H
#define CONFIG_H
#include "stdafx.h"
#pragma warning(disable : 4786)
#include <windows.h>
#include <afxtempl.h>
// 定义抽象数据类型,如果使用STL,可以把String定义成STL中的wstring
typedef CString String;
typedef CMap<String, LPCTSTR, String, LPCTSTR> StringMap;
//代表INI文件里的一个Section
class CSection
{
public:
CSection();
virtual ~CSection();
CSection(CSection & sec);
CSection operator = (CSection & sec);
public:
String m_SectionName; // Section 名字
StringMap m_item; // Section 内容,一个Map,map的key和value都是String
public:
String operator [](String key) const; // 重载运算符,根据Map的key返回Map的value
// 转化成字符串
String ToString() const;
};
typedef CArray<CSection, CSection> SectionArray;
// 代表一个配置文件类,其子类没有成员函数,所以可以任意类型转换。
class CIni
{
public:
String m_FileName; // INI 文件的名称
String m_Buffer; // INI 文件缓冲
SectionArray m_Sections; // INI文件的Section
public:
CIni(void);
virtual ~CIni(void);
public:
String GetFilePath() const;
#ifdef _DEBUG
public:
VOID Dump();
#endif // _DEBUG
};
class CIniReader : public CIni
{
public:
CIniReader(String strFileName);
virtual ~CIniReader(void);
public:
INT Load(); // 读取文件到m_Buffer
INT Parse(); // 解析文件
BOOL Probe();
public:
HANDLE m_handle;
int m_fileattr;
CSection operator [](String SecName) const; // 重载运算符,根据SectionName返回Section
protected:
// 从几个固定的目录中搜索ini文件
};
class CIniWriter : public CIni
{
public:
CIniWriter(String strFileName);
virtual ~CIniWriter(void);
public:
INT Store(); // 读取文件到m_Buffer
// 添加一个Section
BOOL AddSection(CSection sec);
// 添加一个key, value的pair.
BOOL AddPair(String key, String val, String secName);
private:
INT Parse(); // 把对象模型输出到缓冲区。
};
#endif // CONFIG_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -