百度2020校招面试题 读写文件

Problem Description

给出100个文件,以1至100的数字命名,取出偶数编号文件内符合条件的数据

Mentality

使用fstream文件头,用ifstream和ofstream对象装载文件信息。主要用到初始化方法、读取和写入方法、关闭文件流方法

Code (C++)

首先是读取单个文件

#include<iostream>
#include<fstream>
#include<vector>
#include<iomanip>
using namespace std;
/***
*简单读取和写入txt文件 
*in和out文件都放在当前目录下
*用vector存储数据,用迭代器打印出来,只是作为验证工具使用 
*/
int main(){

	vector<double> V;
	vector<double>::iterator it;
	ifstream data("baidufilein.txt");//初始化 
	ofstream result("baidufileout.txt");//初始化 
	if(data.bad())
		return 0; 
	double d;
	while(data>>d)//>>是读取,遇到空格结束当次循环 
		if(true){//条件可以换成格式判断函数之类的,筛选出想要的数据,如邮箱、电话等 
			V.push_back(d);	
			result<<d<<" ";//写入数据,并且以空格隔开 
		}
	data.close();//使用完之后,需要关闭文件流 
	result.close();//同关闭文件流 
	
	int i=0;
	for(it=V.begin();it!=V.end();it++){//利用迭代器打印出vector内的数据 
		cout<<"V["<<i<<"]="<<setprecision(9)<<*it<<endl;
		i++;
	}

	return 0;
}

baidufilein.txt如图:
在这里插入图片描述

结果如下:
在这里插入图片描述

baidufileout.txt如图
在这里插入图片描述

然后是循环读取偶数编号文件

#include<iostream>
#include<fstream>
#include<vector>
#include<iomanip>
#include<string>
using namespace std;
const int maxSize=10;
/***
*循环读取偶数编号的文件 
*
*/
int main(){

	ofstream result("baidudata\\baidufileout.txt");//初始化 
	vector<string> V;
	vector<string>::iterator it;
	
	for(int i=0; i<=maxSize;i=i+2){
		
        //数据在data文件夹下(“baidudata\\”表示在当前工作目录的baidudata文件夹下
		char dataName[20];
		sprintf(dataName,"%s%d%s","baidudata\\",i,".txt");
		ifstream data(dataName);//初始化 
		if(data.bad()){
			cout<<"open file error!";
			return 0;
		}
		
		string d;
		while(data>>d)//>>是读取,遇到空格结束当次循环 
			if(true){//条件可以换成格式判断函数之类的,筛选出想要的数据 
				V.push_back(d);	
				result<<d<<endl;//写入数据,并且以换行隔开 
			}
		data.close();//使用完之后,需要关闭文件流 
	}
	result.close();//同关闭文件流 
	
	int j=0;
	for(it=V.begin();it!=V.end();it++){//利用迭代器打印出vector内的数据 
		cout<<"V["<<j<<"]="<<setprecision(9)<<*it<<endl;
		j++;
	}

	return 0;
}	

文件夹目录:
在这里插入图片描述
1.txt如图
在这里插入图片描述
2.txt如图
在这里插入图片描述
其他文件依此类推

最后运行结果如图:
在这里插入图片描述
baidufileout.txt如图
在这里插入图片描述

先记下文件读写操作,以后再补判断函数~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值