c++ primer 5th ed. practice 10.33

编写程序,接受三个参数:一个输入文件和两个输出文件的文件名,输出文件保存的应该是整数。

  1. 使用 istream_iterator 读取输入文件
  2. 使用 ostream_iterator 将奇数写入第一个输出文件,每个值之后都跟空格。
  3. 将偶数写入第二个输出文件,每个值都独占一行。
 #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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值