解析config文件 练手代码

解析一个如下的CONFIG文件

#config.txt
#SHTTPD Web 服务器配置文件示例
#侦听端口
ListenPort	=	80
#最大并发访问客户端数目
MaxClient	=	8
#Web网页根目录
DocumentRoot	=	/home/www/
#CGI根目录
CGIRoot		=	/home/www/cgi-bin/
#默认访问文件名
DefaultFile	=	index.html
#客户端空闲链接超时时间
TimeOut		=	5

  代码

#include <fstream>
#include <string>
#include <map>
#include <iostream>
#include <vector>
#include <algorithm>
#include <functional>
#include <cctype>
#include <locale>

class GetConfigInfo {
public:
	bool ReadFile(std::string fileName);

private:
	std::map<std::string, std::string> configMap;
	std::fstream fin_;
};

bool GetConfigInfo::ReadFile(std::string fileName) {
	fin_.open(fileName);
	if (fin_.bad())
		return false;
	std::string readLine;
	while (getline(fin_, readLine))  //逐行读取,直到结束
	{
		size_t i = readLine.find("#");
		if (i != std::string::npos)
			continue;
		i = readLine.find_first_of(" \t");
		while (i != std::string::npos)
		{
			readLine.erase(i,1);
			i = readLine.find_first_of(" \t");
		}
		std::cout << readLine << std::endl;
		i = readLine.find("=");
		if (i == std::string::npos)
			continue;
		std::string s1 = readLine.substr(0,i);
		std::string s2 = readLine.substr(i + 1, std::string::npos);
		configMap.insert(std::pair<std::string, std::string>(s1, s2));
	}

	fin_.close();
	return true;
}

int main()
{
	GetConfigInfo gci;
	gci.ReadFile("config.txt");
    return 0;
}

  

时间: 2024-10-07 22:27:33

解析config文件 练手代码的相关文章

python网页抓取练手代码

from urllib import request import html.parser class zhuaqu(html.parser.HTMLParser): blogHtml = "" data = [] flag = 0 def getHtml(self): res = request.urlopen("http://www.cnblogs.com") self.blogHtml = res.read().decode('utf-8') def hand

java解析properties文件

在自动化测试过程中,经常会有一些公用的属性要配置,以便后面给脚本使用,我们可以选择xml, excel或者json格式来存贮这些数据,但其实java本身就提供了properties类来处理properties文件,虽然名字叫properties,其实打开它发现就是一个记事本的文件,所以看起来也比较直观,下面是解析properties文件的实现代码. properties文件里存贮的样子是这样的,然后给他保存为xxx.properties即可. gsBAMUserName1=automation_

SAX方式解析xml文件查看天气

1.SAX方式解析xml文件的步骤: ①创建解析器工厂对象 ②使用当前配置的工厂参数创建SAXParser对象 ③解析xml文件 ④利用DefaultHandler创建事件驱动者 2.对于标签对象进行引用怎么办? ①定义当前解析的标签:private String tagName=null; ②在startElement()方法中赋值tagName:this.tagName=qName; ③在endElement()方法中将tagName赋值为空:this.tagName=null; ④在cha

webpack练手项目之easySlide(二):代码分割

Hello,大家好. 在上一篇 webpack练手项目之easySlide(一):初探webpack  中我们一起为大家介绍了webpack的基本用法,使用webpack对前端代码进行模块化打包. 但是乍一看webpack只是将所有资源打包到一个JS文件中而已,并没有做到真正的按需加载,这当然不是我们所想要的. 不急,今天的这一章我们就来一起继续探索webpack的另外一个功能:code split. 1.什么是code split  英文不好,暂且将其翻译为代码分割.也就是我们根据实际业务需求

PHP练手:日历(代码简单,扩展容易)

抽空写了个日历程序,只注重功能和实现的思路,所以代码和功能都比较简单,但是理解和扩展也比较容易. show()函数用来显示日历,你可以修改show()函数,通过传值的方式来实现显示不同的年月. <?php class Calendar{ public $weekarray = array('星期日','星期一','星期二','星期三','星期四','星期五','星期六'); public $firstDay = '';//当月第一天 public $firstNum = '';//返回当月第一天

KMP算法的定义及KMP练手题 HDU 1711 Number Sequence (我的模板代码)

题意:就是要你来找出b数组在a数组中最先匹配的位置,如果没有则输出-1 思路:直接KMP算法(算法具体思想这位牛写的不错http://blog.csdn.net/v_july_v/article/details/7041827) AC代码: #include<cstdio> #include<cstring> #include<stdlib.h> #include<iostream> using namespace std; #define maxn 100

练手小游戏(代码篇之逻辑杂篇

其实呢,我这游戏就有一个简单的AI框架,其他的呢我就一起走了吧,写的还是挺乱的. 比较重要的就是玩家控制类PlayerController~~~ 这里其实我把几个模块都写在一起了,比如输入控制(InputController),动画控制(AnimatorController),还有角色控制 因为就是一个练手的,不用把各个平台的输入信息都整合了,所以InputController就不写了. 我感觉动画控制和角色控制的分界线很微妙,所以也就写一起了~ 走代码备注很全 //人物控制脚本 public

SAX解析XML文件实例代码

import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import javax.xml.parsers.ParserConfigurationException; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; import org.xml.s

js实现的解析xml文件和xml字符串代码实例

js实现的解析xml文件代码实例:下面分享一段代码实例,它实现了对xml文件的解析作用.代码如下: loadXML = function(xmlFile){ var xmlDoc=null; //判断浏览器的类型 //支持IE浏览器 if(!window.DOMParser && window.ActiveXObject){ var xmlDomVersions = ['MSXML.2.DOMDocument.6.0','MSXML.2.DOMDocument.3.0','Microsof