一个使用glib库访问windows平台ini格式的配置文件的类
来源:互联网 发布:java sso单点登录实例 编辑:程序博客网 时间:2024/04/28 14:40
自己写的一个使用glib库访问windows平台ini格式的配置文件的类CConfig。只实现了读写32位整数,64位整数和字符串功能。
/*************************************************************************> File Name: CConfig.h> Author: > Mail: > Created Time: 2016年08月03日 星期三 09时52分13秒 ************************************************************************/#ifndef _CCONFIG_H#define _CCONFIG_H#include <glib.h>#define ERROR_INFO_LEN 65535#define FILE_PATH_LEN 256class CConfig{public: char* errorinfo; char* filePath; CConfig(); ~CConfig(); bool loadConfig(const char* file); bool saveConfig(); bool getInt(const char* group,const char* key,int *value); bool getInt64(const char* group,const char* key,long long *value); bool getStr(const char* group,const char* key,char *value); bool setInt(const char* group,const char* key,int value); bool setInt64(const char* group,const char* key,long long value); bool setStr(const char* group,const char* key,const char* value);private: GKeyFile *keyfile;};#endif
/*************************************************************************> File Name: CConfig.cpp> Author: > Mail: > Created Time: 2016年08月03日 星期三 10时02分48秒 ************************************************************************/#include <errno.h>#include <stdio.h>#include <ctype.h>#include <string.h>#include <glib.h>#include <stdlib.h>#include "CConfig.h"CConfig::CConfig(){ keyfile = NULL; errorinfo = (char*)malloc(ERROR_INFO_LEN); filePath = (char*)malloc(FILE_PATH_LEN);}CConfig::~CConfig(){ if(keyfile) g_key_file_free(keyfile); free(errorinfo); free(filePath);}bool CConfig::loadConfig(const char* file){ memset(errorinfo,0,ERROR_INFO_LEN); memset(filePath,0,FILE_PATH_LEN); if(strlen(file) > FILE_PATH_LEN) { sprintf(errorinfo,"[CConfig.cpp][CConfig::loadConfig(const char* file)][配置文件路径过长]"); return false; } GError* err = NULL; keyfile = g_key_file_new(); g_key_file_set_list_separator(keyfile,','); if(!g_key_file_load_from_file(keyfile,file,(GKeyFileFlags)0,&err)) { sprintf(errorinfo,"[CConfig.cpp][CConfig::loadConfig(const char* file)][can not load %s fail:%s]",file,err->message); g_error_free(err); return false; } return true;}bool CConfig::saveConfig(){ GError* err = NULL; if(g_key_file_save_to_file(keyfile,filePath,&err)) { sprintf(errorinfo,"[CConfig.cpp][CConfig::saveConfig()][保存配置文件%s失败. fail:%s]",filePath,err->message); return false; } return true;}bool CConfig::getInt(const char* group,const char* key,int *value){ memset(errorinfo,0,sizeof(errorinfo)); GError *err = NULL; *value = g_key_file_get_integer(keyfile,group,key,&err); if(err) { sprintf(errorinfo,"[CConfig.cpp][CCConfig::getInt(const char* group,const char* key,int &value)][error occur. fail:%s]",err->message); return false; } return true;}bool CConfig::getInt64(const char* group,const char* key,long long *value){ memset(errorinfo,0,sizeof(errorinfo)); GError *err = NULL; *value = g_key_file_get_int64(keyfile,group,key,&err); if(err) { sprintf(errorinfo,"[CConfig.cpp][CCConfig::getInt64(const char* group,const char* key,int &value)][error occur. fail:%s]",err->message); return false; } return true;}bool CConfig::getStr(const char* group,const char* key,char *value){ memset(errorinfo,0,sizeof(errorinfo)); GError *err = NULL; char* val = g_key_file_get_string(keyfile,group,key,&err); if(err) { sprintf(errorinfo,"[CConfig.cpp][CCConfig::getStr(const char* group,const char* key,char *value)][error occur. fail:%s]",err->message); return false; } if(strlen(val) > sizeof(value)) { sprintf(errorinfo,"[CConfig.cpp][CCConfig::getStr(const char* group,const char* key,int &value)][读取的配置内容的大小超过了存储缓冲区]"); return false; } memcpy(value,val,strlen(val)); return true;}bool CConfig::setInt(const char* group,const char* key,int value){ g_key_file_set_integer(keyfile,group,key,value); return true;}bool CConfig::setInt64(const char* group,const char* key,long long value){ g_key_file_set_int64(keyfile,group,key,value); return true;}bool CConfig::setStr(const char* group,const char* key,const char* value){ g_key_file_set_string(keyfile,group,key,value); return true;}
0 0
- 一个使用glib库访问windows平台ini格式的配置文件的类
- INI配置文件的格式
- ini配置文件的格式
- INI配置文件的格式
- INI配置文件的格式
- INI配置文件的格式
- INI配置文件的格式
- INI配置文件的格式
- INI配置文件的格式
- ini配置文件的格式
- INI配置文件的格式
- 关于windows平台下 ini配置文件value 的长度
- 一个读取INI配置文件的类
- ini 配置文件的格式 及读取
- ini 配置文件的格式 及读取
- ini配置文件的格式及读取操作
- 一个用于读取应用程序配置文件(*.ini)的类
- PHP如何解析一个ini的配置文件?
- scala九九乘法表
- 【LoadRunner】LR录制脚本时event为0,IE浏览器无法打开的解决方法
- spring-data 前台分页
- 如何让开发板的linux终端显示工作路径
- 12.shell编程(12) --- 文件
- 一个使用glib库访问windows平台ini格式的配置文件的类
- 多态
- Mysql+Mybatis+spring 后台分页
- 右手边的等待
- IO流反序列化(objectInputStream)和序列化(ObjectOutputStream)连续存储对象StreamCorruptedException
- STM32F系列JTAG口重映射成为普通GPIO
- 左心房的守护
- EasyUI的combobox用法
- javascript中使用browser对象得到屏幕宽高,位深度以及页面的起始坐标和页面宽高