c/c++ 简单的解析ini配置文件程序
来源:互联网 发布:算法导论16.1 2 编辑:程序博客网 时间:2024/05/22 10:27
现在基本使用gflags,所以不怎么使用这个读取ini对应的程序或库了,
由于ini一般比较方便,所以程序中涉及到的配置文件一般都用conf.ini
针对ini的解析网上也有很多,其实只要你会写程序,完全可以自己定制一个(如果你认为有必要的话,不过我建议不要重复造轮子的好)
下面这个是本地编译可用的一个例子,是不是不是那么麻烦?
conf.ini
[s1]
a=1
b=2
c=abc/efg/t.log
[s2]
e=5
f=m_abc
iniParser.cpp
#include "iniParser.h"
int INIParser::parser(){
FILE* fp = fopen(inifile, "r");
if(NULL == fp){
return -1;
}
std::string SECTION("");
while(!feof(fp)){
char _buf[MAX_BUF_SIZE] = {0};
char* gret = fgets(_buf, MAX_BUF_SIZE, fp);
if(NULL == gret){
continue;
}
std::string sbuf(_buf);
sbuf.erase(0, sbuf.find_first_not_of(" "));
sbuf.erase(sbuf.find_last_not_of(" ")+1);
//skip comments
if(comments.end() != find(comments.begin(), comments.end(), sbuf[0])){
continue;
}
if('[' == sbuf[0]){
sbuf.erase(0, sbuf.find_first_not_of("["));
sbuf.erase(sbuf.find_last_not_of("]")-1);
SECTION = sbuf;
}else{
size_t pos = sbuf.find("=");
if(std::string::npos == pos){
continue;
}
std::string key = sbuf.substr(0, pos);
std::string value = sbuf.substr(pos+1);
value.erase(value.find_last_not_of("\r\n")+1);
inimap[SECTION][key] = value;
}
}
fclose(fp);
return 0;
}
ssmap& INIParser::getKeyValBySection(const char* section){
return inimap[std::string(section)];
}
iniParser.h
#ifndef __INIPARSER_H__
#define __INIPARSER_H__
#include <iostream>
#include <fstream>
#include <vector>
#include <map>
#include <algorithm>
typedef std::map<std::string, std::string> ssmap;
typedef std::map<std::string, ssmap> INIMAP;
#define MAX_BUF_SIZE 512
class INIParser {
public:
INIParser(const char* inifile_name){
inifile = inifile_name;
comments.push_back('#');
comments.push_back(';');
}
~INIParser(){}
public:
int parser();
ssmap& getKeyValBySection(const char* section);
public:
const char* inifile;
INIMAP inimap;
std::vector<char>comments;
};
#endif
- c/c++ 简单的解析ini配置文件程序
- 简单的读配置文件的C程序
- C++ini读写配置文件
- 【C++】读写ini配置文件
- C语言ini形式配置文件解析库——iniparser
- 用C语言实现解析简单配置文件的小工具
- 用C读取INI配置文件
- 用C读取INI配置文件
- 用C读取INI配置文件
- 用C读取INI配置文件
- 用C读取INI配置文件
- linux C获取ini配置文件
- [C/C++]伪读写ini配置文件
- C简单的配置文件操作
- 标准C处理类似INI配置文件的键值型文档
- 标准C处理类似INI配置文件的键值型文档
- 标准C处理类似INI配置文件的键值型文档
- ini解析库 c语言
- ORACLE FAILURE ADVISE
- MySQL高效分页:子查询分页
- mac在命令行使用mysql
- AtomicInteger的介绍和使用
- 标准【wpa_supplicant】到【神州数码】 认证的修改记录(中)——分析调试
- c/c++ 简单的解析ini配置文件程序
- 解决NSArray和NSDictionary中含有null时 writeToFile 失败的问题
- dbms_sqldiag 创建sql测试用例
- Warning 1 Command line warning D9035 : option 'Wp64' has been deprecated and will be removed in a fu
- Linux 下部署PPTP VPN -- 服务端
- ASP.NET Cookie的使用
- 卫星拍下的正在飞行的飞机(在帝都郊区啊!!!)
- 生活在深圳我们需要的不是叹息与感概
- Java进行zip包压缩/解压