题目描述:编写程序,接受3个叁数:一个输入文件和2个输出文件名。输入文件保存的应该是证书。使用istream_iterator读取输入文件。使用ostream_iterator将技术写入第一个文件,每个值之后都跟一个空格。将偶数写入第二个输出文件,每个值都独占一行。
#include <iostream>
#include <fstream>
#include <iterator>
using namespace std;
/*
通用迭代器,非容器类迭代器
ostream_iterator<T> out(os);(头文件iterator定义)
有每输出一个元素就跟着一个字符的重载版本
out 将类型为T的值写如输出流os中
*/
int main(int argv, char *argc[])
{
if (argv != 4) {
cout << "用法错误" << endl;
return -1;
}
//输入文件流对象
ifstream input(argc[1]); //默认方式打开
if (!input) {
cout << "input file is no open !" << endl;
}
//输出文件流对象
ofstream output1(argc[2]);
if (!output1) {
cout << "output file1 is no open !" << endl;
}
//输出文件流对象
ofstream output2(argc[3]);
if (!output2) {
cout << "output file2 if no open !" << endl;
}
//使用迭代器标准库内定义的流迭代器从文件中读入整数
istream_iterator<int> in_iter(input);
istream_iterator<int> eof;//到达文件末尾标志
//构造一个输出流迭代器对象, 将int类型的值写入到输出流
//output1每个值跟着一个空格
ostream_iterator<int> out1_iter(output1, " ");
//构造一个输出流迭代器对象,将int类型的值写入到输出流
//每个值跟着一个空行
ostream_iterator<int> out2_iter(output2, "\n");
while (in_iter != eof) { //流迭代器未到达文件末尾
if (*in_iter & 1) {
*out1_iter++ = *in_iter;
} else {
*out2_iter++ = *in_iter;
}
in_iter++;
}
/*
一般做法
int num = 0;
while (input >> num) {
if (num % 2) {
output1 << num << " ";
} else {
output2 << num << "\n";
}
}
*/
return 0;
}
网友评论