练习10.33

题目描述:编写程序,接受3个叁数:一个输入文件和2个输出文件名。输入文件保存的应该是证书。使用istream_iterator读取输入文件。使用ostream_iterator将技术写入第一个文件,每个值之后都跟一个空格。将偶数写入第二个输出文件,每个值都独占一行。

#include 
#include 
#include 
using namespace std;

/*
    通用迭代器,非容器类迭代器
    ostream_iterator 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 in_iter(input);
    istream_iterator eof;//到达文件末尾标志
    //构造一个输出流迭代器对象, 将int类型的值写入到输出流
    //output1每个值跟着一个空格
    ostream_iterator out1_iter(output1, " ");
    //构造一个输出流迭代器对象,将int类型的值写入到输出流
    //每个值跟着一个空行
    ostream_iterator 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;
}

你可能感兴趣的:(练习10.33)