Бьерн Страуструп.
Язык программирования С++
274
ostream& ends(ostream&); // добавить '\0' и вывести
ostream& flush(ostream&); // выдать поток
istream& ws(istream&); // удалить обобщенные пробелы
// Манипуляторы имеют параметры:
SMANIP
setbase(int b);
SMANIP setfill(int f);
SMANIP setprecision(int p);
SMANIP setw(int w);
SMANIP resetiosflags(long b);
SMANIP setiosflags(long b);
Например,
cout << 1234 << ' '
<< hex << 1234 << ' '
<< oct << 1234 << endl;
напечатает
1234 4d2 2322
и
cout << setw(4) << setfill('#') << '(' << 12 << ")\n";
cout << '(' << 12 << ")\n";
напечатает
(##12)
(12)
Не забудьте включить файл , если используете манипуляторы с параметрами.
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
// от конца файла
};
Бьерн Страуструп.
Язык программирования С++
275
//...
};
Позиции в потоке отсчитываются от 0, как если бы файл был массивом из n символов:
char file[n-1];
и если fout присоединено к file, то
fout.seek(10);
fout<<'#';
поместит # в file[10].
Достарыңызбен бөлісу: