istream_iterator ostream_iterator 迭代器和IO

来源:互联网 发布:硝酸甘油软膏 知乎 编辑:程序博客网 时间:2024/05/16 07:53

头文件:

#include <iterator>istream_iteratorostream_iterator

成员函数:

如同使用其他iterator一样来使用

member function:operator*operator++operator=

示范:

istream_iterator

#include <iterator>#include <iostream>int main(){    double temp_a = 0, temp_b = 0;    std::cout << "please input two numbers : " << std::endl;    std::istream_iterator<double> ist(std::cin);    std::istream_iterator<double> eos;    if (ist != eos)        temp_a = *ist;    ++ist;    if (ist != eos)        temp_b = *ist;    std::cout << temp_a << " * " << temp_b << " = " << temp_a * temp_b << std::endl;    return 0;}

ostream_iterator

#include <iostream>#include <iterator>#include <vector>#include <algorithm>int main(void){    std::vector<double> vec;    for (int x = 0; x < 10; ++x)        vec.push_back(x * 3);    std::ostream_iterator<double> osi(std::cout, ", ");    std::copy(vec.begin(), vec.end(), osi);    return 0;} 

combine

#include <iostream>#include <fstream>#include <iterator>#include <vector>#include <algorithm>#include <assert.h>using namespace std;int main(){    std::string from, to;    std::cin >> from >> to;    std::ifstream is;    is.open(from, std::ifstream::in);    if (!is)        assert(-1);    std::istream_iterator<std::string> ii(is);    std::istream_iterator<std::string> eos;    std::vector<std::string> b(ii, eos);    sort(b.begin(), b.end());    std::ofstream os;    os.open(to, std::ostream::out);    if (!os)        assert(-1);    std::ostream_iterator<std::string> oi(os, "\n");    unique_copy(b.begin(), b.end(), oi);    is.close();    os.close();    return 0;}
0 0
原创粉丝点击