您当前的位置: 首页 >  c++

qianbo_insist

暂无认证

  • 0浏览

    0关注

    399博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

c++自由读写配置ifstream(一)

qianbo_insist 发布时间:2021-02-28 11:50:02 ,浏览量:0

使用ifstream读写配置

ifstream标准c++的读写是非常方便的,效率也很不错,但是有几点需要注意的地方。

如下的配置文件 in.txt #418511899@qq.com-author:钱波-qianbo-2021-02-28 ##field id(int):address(varchar):width(int):height(int) 1 rtsp://127.0.0.1/l.264 1280 720 //camera1 2 rtsp://127.0.0.1/l.264 1280 720 45 rtsp://127.0.0.1/l.264 640 360

在这里插入图片描述

如何使用

我们按照习惯使用# 或者 // 来注释,表明不需要用这一行配置,而使用空格来表明字段之间的分隔。如上有四个变量字段需要读写,1 id 2 地址 3 宽度 4 高度,而标准c++是可以使用>>来直接将文件等内容直接移入变量的。

//首先打开文件
std::ifstream infile("in.txt", std::ios::in); //以文本模式打开in.txt备读
if (!infile) { //打开失败
	std::cout  address>>width>>height;

这样是可以的,非常方便,可以直接移入整形变量,或者float,double,唯一值得注意的地方是>>操作符,到文件结尾的时候需要多读一次看是否文件结束,稍有不慎程序员以为多读了一次,自己的变量怎么多读了一行,所以要使用移位符号后,立刻判断是否到了文件结尾。判断是否是注释函数:

static bool ifnote(const std::string & tmp)
{
	if (tmp.empty())
		return false;
	int l = (int)tmp.length();
	char a = tmp[0];
	char b;
	if (l >= 2)
		b = tmp[1];
	if (l == 1)
		return a == '#';
	if (l >= 2)
		return a == '#' || (a == '/'&& b == '/');
	return false;
}

以下为调用方法,main主函数

int main()
{
	ifstream infile("in.txt", std::ios::in);
	string s;
	string address, width, height;
	int i = 0;
	while (infile.good())
	{
		s.clear();
		infile >> s;
		if (infile.eof()) //注意这一行一定要有,否则下面会多执行一次
			break;

		if (s.empty())
			continue;
		if (!ifnote(s))
		{
			infile >> address >> width >> height;
			cout             
关注
打赏
1663161521
查看更多评论
0.0386s