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如图
先记下文件读写操作,以后再补判断函数~