我們可以用這種方式容易的表示輸入和輸出流,例如:
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)
我們使用一對迭代器來初始化向量。