Бьерн Страуструп - Язык программирования С++. Главы 9-10
Страница 37. Члены 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].

 
« Предыдущая статья   Следующая статья »