題目描述:編寫程序,接受3個叁數(shù):一個輸入文件和2個輸出文件名苦酱。輸入文件保存的應(yīng)該是證書。使用istream_iterator讀取輸入文件挤聘。使用ostream_iterator將技術(shù)寫入第一個文件誉己,每個值之后都跟一個空格。將偶數(shù)寫入第二個輸出文件秒紧,每個值都獨占一行。
#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]); //默認(rèn)方式打開
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;
}
//使用迭代器標(biāo)準(zhǔn)庫內(nèi)定義的流迭代器從文件中讀入整數(shù)
istream_iterator<int> in_iter(input);
istream_iterator<int> eof;//到達(dá)文件末尾標(biāo)志
//構(gòu)造一個輸出流迭代器對象, 將int類型的值寫入到輸出流
//output1每個值跟著一個空格
ostream_iterator<int> out1_iter(output1, " ");
//構(gòu)造一個輸出流迭代器對象臭笆,將int類型的值寫入到輸出流
//每個值跟著一個空行
ostream_iterator<int> out2_iter(output2, "\n");
while (in_iter != eof) { //流迭代器未到達(dá)文件末尾
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;
}