C++:流迭代器读写数据

问题

编写程序,接受三个参数:一个输入文件和两个输出文件的文件名.
输入文件保存的应该是整数.使用istream_iterator读取输入文件.使用
ostream_iterator将奇数写入第一个输出文件,每个值之后都跟一个空格.将偶数
写入第二个输出文件,每个值都独占一行.

C++.
image-2130

源代码

必须提供三个文件:一个里面有数据,另外两个空文件.

/*************************************************************************
> File Name: test.10.33.cpp
> Author: puruidong
> Mail: 1@w1520.com
> Created Time: 2014年06月22日
************************************************************************/

#include
#include
#include
#include
#include
using namespace std;

/*********************************

编写程序,接受三个参数:一个输入文件和两个输出文件的文件名.
输入文件保存的应该是整数.使用istream_iterator读取输入文件.使用
ostream_iterator将奇数写入第一个输出文件,每个值之后都跟一个空格.将偶数
写入第二个输出文件,每个值都独占一行.

*****************************************/

void outs(string file,bool wr)
{
fstream f(file);
istream_iterator ins(f);
istream_iterator eof;
vector vecs(ins,eof);
if(wr)
{
ostream_iterator outins(cout," ");
copy(vecs.begin(),vecs.end(),outins);
}else
{
ostream_iterator outins(cout,"\n");
copy(vecs.begin(),vecs.end(),outins);
}
}

void rwfile(string readfile,string writefile1,string writefile2)
{
fstream f(readfile);
fstream fw1(writefile1);
fstream fw2(writefile2);
istream_iterator ins(f);
istream_iterator eof;
vector vec(ins,eof);
//cout << vec.size() << endl; // unique_copy(ins,eof,vec); ostream_iterator out1(fw1," ");
ostream_iterator out2(fw2,"\n");
fw1 << "**********************\n奇数\n*******************" << endl; fw2 << "*********************\n偶数\n********************" << endl; for(vector::iterator it=vec.begin();it!=vec.end();++it)
{
if(*it%2==0)
{
out2=*it;
}else
{
out1 = *it;
}
}
fw1 << "\n*****************奇数******" << endl; fw2 << "\n*******************偶数********" << endl; bool wr = true; outs(writefile1,wr); cout << "\n\n*************此输出为程序再次读取文件[已写入完成]的输出,对格式进行了处理,但是未改变源文件格式,具体可看源文件.******************\n\n" << endl; outs(writefile2,wr=false); } int main() { //rwfile rwfile("test.10.33.readfile.txt","test.10.33.rout1.txt","test.10.33.rout2.txt"); return 0; }

发表评论

电子邮件地址不会被公开。 必填项已用*标注

*

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据