编写程序,接受三个参数:一个输入文件和两个输出文件的文件名,输出文件保存的应该是整数。
- 使用 istream_iterator 读取输入文件
- 使用 ostream_iterator 将奇数写入第一个输出文件,每个值之后都跟空格。
- 将偶数写入第二个输出文件,每个值都独占一行。
#include <iostream>
#include <fstream>
#include <string>
#include <iterator>
#include <algorithm>
//奇数判断式
bool is_odd(int i) { return i%2;}
void save(std::string &dat,
std::string &odd, std::string &even) {
//文件绑定流
std::ifstream in_dat(dat);
std::ofstream out_odd(odd), out_even(even);
//关键算法 partition_copy() p775
std::partition_copy(std::istream_iterator<int>(in_dat),
std::istream_iterator<int>(),
std::ostream_iterator<int>(out_odd, " "),
std::ostream_iterator<int>(out_even, "\n"),
is_odd);
}
int main() {
std::string dat("in.dat"),
odd("odd.dat"), even("even.dat");
save(dat, odd, even);
std::cout << "Done." << std::endl;
}
关键在于 算法 partition_copy(beg, end, dest1, dest2, pred)