题目来源:《Essential C++》练习3.4
编写一个程序,利用istream_iterator从标准输入设备读取一连串整数。利用ostream_iterator将其中的奇数写入至某个文件,每个数值皆以空格分隔。再利用ostream_iterator将偶数写到另一个文件,每个数值单独放在一行。
Implement a function that uses istream_iterator to read a series of integer from the standard input device. Use ostream_iterator to write the odd numbers to a file (3_3_1out.txt), which delimited by space. Write the even numbers to another file (3_3_2out.txt), which delimited by a return.
#include<iostream>
#include<iterator>
#include<vector>
#include<algorithm>
#include<fstream>
using namespace std;
class even_elem
{
public:
bool operator() (int elem)
{
return elem % 2 ? false : true;
}
};
int main()
{
vector<int> input;
istream_iterator<int> in(cin), eos;
copy(in, eos, back_inserter(input));
vector<int>::iterator division = partition(input.begin(), input.end(), even_elem());
ofstream even_file("even_file"), odd_file("odd_file");
if (!even_file || !odd_file)
{
cerr << "unable to open output files.";
return -1;
}
ostream_iterator<int> even_iter(even_file, "\n"), odd_iter(odd_file, " ");
copy(input.begin(), division, even_iter);
copy(division, input.end(), odd_iter);
return 0;
}