// outiter.cpp: Потоковый итератор вывода; запись в файл // с помощью операции присваивания,
iinclude <iostream> iinclude <vector> iinclude <iterator> using namespace std;
int main() {
ostream_iterator<int> ifcout, "abc\n");
*i++ = 123;
*i++ = 456;
cout « endl;
return 0; }
Эта программа выведет:
123abc 456abc
Поскольку здесь из всей STL мы используем только шаблон ostreamiterator, программа будет работать, если напишем ^include <iterator> вместо ^include <vector>.
С вводом дела обстоят несколько сложнее, потому что требуется обнаружить конец входного потока. Вспомним обсуждение конца файла в разделе 1.9. Ниже приведено нетривиальное решение задачи, которая заключается в том, чтобы прочитать все числа из файла num.txt, содержащего только целые числа в обычном формате.
// initer.cpp: Потоковый итератор ввода; чтение файла
// с помощью операторов присваивания.
iinclude <iostream>
iinclude <fstream>
iinclude <vector>
iinclude <iterator>
using namespace std;
int main()
{ ifstream file("num.txt"); if (file)
{ istream_iterator<int> i(file), eof; int x;
while (i != eof) { x = *i++;
cout << x « " ";
} } else cout << "Cannot open file num.txt."; cout << endl; return 0; }
Например, если файл num.txt содержит две строчки
10 20 30
программа выведет на экран:
10 20 30