天天看點

iostream iterator類

 }/************

iostream iterator

STL定義了供輸入及輸出的iostream iterator類,稱為

istream_iterator和ostream_iterator,分别支援單一

型别的元素的讀取和寫入。

使用方法:

1.包含頭檔案:

#include <iterator>

using namespace std;

2.像使用其他iterator一樣使用istream_iterator和

ostream_iterator。如:

使用一對“連接配接至标準輸入”的iterator用于标示元素範圍:

// 将is定義為一個“連接配接至标準輸入裝置”的istream_iterator

istream_iterator<string> is(cin);

// 定義istream_iterator時不為它指定istream對象,它即代表

// 了end-of-file。

istream_iterator<string> eof;

ostream_iterator<string> os(cout, " ");

除了“連接配接至标準輸入”外,還可以連接配接至其他裝置,如檔案:

#include <fstream>

using namespace std;

ifstream in_file("in.txt");

ofstream out_file("in.txt");

if ( !in_file || !out_file )

{

cerr << "failed to open the necessary file! /n";

return -1;

}

istream_iterator<string> is(in_file);

istream_iterator<string> eof;

ostream_iterator<string> os(out_file, " ");

*************/

#include <iostream>

#include <iterator>

#include <string>

#include <vector>

#include <fstream>

#include <algorithm>

using namespace std;

int main()

{

// 1. 标準輸入輸出操作。

istream_iterator<string> is(cin);

istream_iterator<string> eof;

vector<string> text;

// 将标準輸入的内容複制至text中。

// 由于使用的是vector,故使用back_inserter()

copy(is, eof, back_inserter(text));

// do something.

sort(text.begin(), text.end());

// 輸出至标準輸出。

ostream_iterator<string> os(cout, " ");

copy(text.begin(), text.end(), os);

// 2. 非标準輸入輸出操作:檔案讀寫操作。

ifstream in_file("in.txt");

ofstream out_file("in.txt");

if ( !in_file || !out_file )

{

cerr << "failed to open the necessary file! /n";

return -1;

}

istream_iterator<string> is2(in_file);

istream_iterator<string> eof2;

vector<string> text2;

copy(is2, eof2, back_inserter(text2));

sort(text2.begin(), text2.end());

ostream_iterator<string> os2(out_file, " ");

copy(text2.begin(), text2.end(), os2);

return 0;