流迭代器

我們可以用這種方式容易的表示輸入和輸出流,例如:

 

ofstream_iterator<string> oo(cout);  //assigning to *oo is to write to cout

*oo = "Hello,";   //meaning cout<<"Hello,"

++oo;   //get ready for next output operation

*oo = "World!/n";   //meaning cout<<"World!/n"

 

標準庫中提供了一個ostream_iterator類型;osstream_iterator<T>是一個迭代器,可以用它來寫入

類型T的值。類似也有 istream_iterator<T>,用它讀取類型T的值:

istream_iterator<string> ii(cin);

string s1 = *ii;   //cin>>s1

++ii;    //get ready for next input operation

string s2 = *ii;  //cin>>s2

 

通過ostream_iterator 和 istream_iterator,我們可以爲自己的I/O使用copy();

 

int main()

{

   string from,to;

   cin>>from>>to;

 

ifstream is(from.c_str());

ofstream os(to.c_str());

 

istream_iterator<string> ii(is);

istream_iterator<string> eos;  //input sentinel

ostream_iterator<string> oo(os,"/n");

 

vector<string> b(ii,eos);

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

copy(b.begin(),b.emd(),oo); //copy buffer to output

}

 

迭代器eos是流迭代器中對”輸入結束“的表示。當一個istream到達輸入結束,它的流迭代器相當於默認的流迭代器(這裏的eos)

 

我們使用一對迭代器來初始化向量。

發佈了41 篇原創文章 · 獲贊 4 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章