练习10.33

题目描述:编写程序,接受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;
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy阅读 13,149评论 1 51
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 11,840评论 0 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,769评论 19 139
  • 这周的课讲了将泛型算法。现在将泛型算法收集下,备用。 (1)泛型算法用迭代器来解决第一个要求:遍历容器。所有迭代器...
    shenhua8369阅读 1,722评论 0 0
  • 今天是周一,一周七天中最为忙碌的一天。早晨八点还未到,老师已经打开门开始接诊了。我们到时,老师已经看过一个病人。 ...
    林若风阅读 4,944评论 1 1