#include <iostream>
#include <string>
#include <stdint.h>
#include <map>
#include <fstream>
#include <stdlib.h>
#include <stdio.h> enum
{
enmMaxConfigWordLen = ,
}; typedef std::map<std::string,std::string> ATTRMAP; void GetTextFileContent(const char *fileName,char buf[],const uint32_t maxBufLen,uint32_t &readBufLen)
{
std::ifstream file(fileName,std::ios::in);
if(!file)
{
return ;
}
char c;
readBufLen = ;
while(file.get(c) && readBufLen < maxBufLen)
{
if(c != '\n' && c != ' ' && c != )
{
buf[readBufLen++] = c;
}
}
buf[readBufLen]='\0';
} void GetAllAttrFromStr(const char *buf,const uint32_t bufLen,ATTRMAP &attrMap)
{
char key[enmMaxConfigWordLen],value[enmMaxConfigWordLen];
int32_t flag = ,len = ; //0->key,1->value
for(uint32_t i = ;i < bufLen; ++i)
{
const char &c = buf[i];
switch(c)
{
case '{':flag=;break;
case '}':
value[len] = '\0';
attrMap[key] = value;
break;
case ':':
key[len] = '\0';
len = ;
flag = ;
break;
case ',':
value[len] = '\0';
len = ;
flag = ;
attrMap[key] = value;
break;
default:
if( flag == )
{
key[len++] = c;
}
else if( flag == )
{
value[len++] = c;
}
break;
}
}
} int32_t main()
{
const uint32_t maxFileBufLen = ;
char buf[maxFileBufLen];
uint32_t bufLen;
GetTextFileContent("dbconfig.cfg",buf,maxFileBufLen,bufLen);
ATTRMAP attrMap;
GetAllAttrFromStr(buf,bufLen,attrMap);
std::string szHost = attrMap["host"];
std::string szUsr = attrMap["user"];
std::string szPasswd = attrMap["passwd"];
std::string szDbName = attrMap["dbname"];
std::string szTableName = attrMap["tablename"];
uint32_t unPort = atol(attrMap["port"].c_str());
printf("szHost = '%s'\nszUsr = '%s'\nszPasswd = '%s'\nszDbName = '%s'\nszTableName = '%s'\nunPort = %d\n",\
szHost.c_str(),szUsr.c_str(),szPasswd.c_str(),szDbName.c_str(),szTableName.c_str(),unPort);
return ;
}

测试文件:

{
host:192.168.75.134,
port:,
user:sdo,
passwd:,
dbname:sdo_config,
tablename:sdo_item
}

测试结果:

szHost = '192.168.75.134'
szUsr = 'sdo'
szPasswd = ''
szDbName = 'sdo_config'
szTableName = 'sdo_item'
unPort =

最新文章

  1. 统计iOS项目的总代码行数的方法
  2. BZOJ 3555: [Ctsc2014]企鹅QQ [字符串哈希]【学习笔记】
  3. SqlServer查询表中各列名称、表中列数
  4. FTD团队目录
  5. IOS开发基础知识--碎片44
  6. windows电脑变成wifi热点命令
  7. 使用System.out.print/prilntln() 输出时存在的问题
  8. ShopEX 4.8.5.81822 前台Getshell
  9. DB2行转列、列转行等操作
  10. Duplex Service in WCF(CodeProject上的)
  11. git digest
  12. 一次Redis 的性能测试和问题
  13. java 基本数据类型与变量类型
  14. mpvue——小程序修改input的placehold样式
  15. 五十、进程间通信——System V IPC 之共享内存
  16. mysql中的几种日志了解
  17. Python学习之旅(十二)
  18. apache ab 压力测试
  19. ubuntu 下 rvm 卸载和重装
  20. Physical (Raw) Versus Logical Backups

热门文章

  1. Mac terminal 解压压缩
  2. jQuery Event.delegateTarget 属性详解
  3. android 全屏视频播放(SurfaceView + MediaPlayer)
  4. TYVJ P1004 滑雪 Label:记忆化搜索
  5. 【wikioi】1403 新三国争霸(dp+kruskal)
  6. 【BZOJ】1085: [SCOI2005]骑士精神(A*启发式搜索)
  7. 连接access的语句
  8. Java下利用Jackson进行JSON解析和序列化
  9. 7. Add a networking service
  10. node系列:琐碎备忘