Ini文件读取类,采用C++ STL实现

本文介绍了一个使用C++ STL编写的IniFile类,用于读取和操作Ini配置文件。类包含了初始化、保存、获取键值对等方法,适用于简化Ini文件的处理。示例代码展示了如何读取和显示Ini文件内容以及获取特定键值。
摘要由CSDN通过智能技术生成

背景:编程过程中经常会遇到读取Ini文件的场合,封装一个方便的类,能否避免重复编写,以后可复用。ini文件的格式很简单,并且不像xml之类的配置文件严谨。通常用于配置简单的键值对。
本类测试文件如下:<server.ini>

[plain]  view plain copy
  1. #what  
  2. [server1]  
  3.  ip= 192.168.1.1  
  4. port=8888  
  5. type=ai  
  6.   
  7. #no  
  8. [server2]  
  9. ip=10.10.10.10  
  10. port=5002  
  11. type=move  
  12.   
  13. #shit  
  14. [server3]  
  15. ip=127.0.0.1  
  16. port=9527  
  17. type=cache  

[cpp]  view plain copy
  1. /*********************头文件   inifile.h *********************************/  
  2. <pre name="code" class="cpp">#ifndef _INI_FILE_  
  3. #define _INI_FILE_  
  4.   
  5. #include <string>  
  6. #include <map>  
  7. #include <iostream>  
  8.   
  9. using namespace std;  
  10.   
  11. #define MAX_LINE_BUF_SIZE               80  
  12. #define MAX_SECTION_CONTEXT_BUF_SIZE    40  
  13. #define MAX_KEY_SIZE                    40  
  14. #define MAX_VALUE_SIZE                  40  
  15.   
  16. class IniFile  
  17. {  
  18.     typedef std::map< string, string > MapKeyValue;  
  19.     typedef map< string, MapKeyValue > MapSection;  
  20.   
  21. public:  
  22.     IniFile();  
  23.     ~IniFile();  
  24.   
  25.     bool Init(char* szFileName);  
  26.     void Save();  
  27.     bool SaveAs(char* szFileName);  
  28.     void ShowFileContext();  
  29.   
  30.     string GetValue(const string& strKey);  
  31.     string GetValueFromSection(const string& strSection, const string& strKey);  
  32.   
  33.     int GetInt(const string& strKey);  
  34.     float GetFloat(const string& strKey);  
  35.   
  36. private:  
  37.     void DelInvalidSign(char* szOldLine, char* szNewLine);  
  38.     bool IsNoteLine(char* szLine);  
  39.     bool IsEmptyLine(char* szLine);  
  40.     bool IsNewSection(char* szLine);  
  41.     bool IsKeyValueLine(char* szLine);  
  42.   
  43.     bool GetNewSectionContext(char* szLine, string& strNewSectionContext);  
  44.     bool GetKeyValue(char* szLine, string& strKey, string& strValue);  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值