Члены ostream
В классе ostream есть лишь несколько функций для управления выводом, большая часть таких функций находится в классе ios.
class ostream : public virtual ios { //... public: ostream& flush();
ostream& seekp(streampos); ostream& seekp(streamoff, seek_dir); streampos tellp(); //... };
Как мы уже говорили, функция flush() опустошает буфер в выходной поток. Остальные функции используются для позиционирования в ostream при записи. Окончание на букву p указывает, что именно позиция используется при выдаче символов в заданный поток. Конечно эти функции имеют смысл, только если поток присоединен к чему-либо, что допускает позиционирование, например файл. Тип streampos представляет позицию символа в файле, а тип streamoff представляет смещение относительно позиции, заданной seek_dir. Все они определены в классе ios:
class ios { //... enum seek_dir { beg=0, // от начала файла cur=1, // от текущей позиции в файле end=2 // от конца файла }; //... };
Позиции в потоке отсчитываются от 0, как если бы файл был массивом из n символов:
char file[n-1];
и если fout присоединено к file, то
fout.seek(10); fout<<'#';
поместит # в file[10].