Бьерн Страуструп - Язык программирования С++. Главы 8-10 - Члены ostream

ОГЛАВЛЕНИЕ


10.4.3 Члены 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].