std::basic_ostream<CharT,Traits>::seekp
basic_ostream& seekp( pos_type pos ); | (1) | |
basic_ostream& seekp( off_type off, std::ios_base::seekdir dir ); | (2) |
Устанавливает индикатор позиции вывода текущего связанного объекта streambuf.
| Ведёт себя как UnformattedOutputFunction (за исключением того, что фактически не выполняет вывод). После создания и проверки объекта sentry | (начиная с C++11) |
1) если
fail() != true, устанавливает индикатор позиции вывода в абсолютное значение pos (относительно начала файла), вызывая rdbuf()->pubseekpos(pos, std::ios_base::out). В случае ошибки вызывает setstate(std::ios_base::failbit).
2) если
fail() != true, устанавливает индикатор позиции вывода в смещение off относительно dir, вызывая rdbuf()->pubseekoff(off, dir, std::ios_base::out). В случае ошибки вызывает setstate(std::ios_base::failbit).Параметры
| pos | - | абсолютная позиция, в которую нужно установить индикатор позиции вывода | ||||||||
| off | - | относительная позиция (положительная или отрицательная), в которую нужно установить индикатор позиции вывода | ||||||||
| dir | - | определяет базовую позицию, относительно которой применяется смещение. Может быть одной из следующих констант:
|
Возвращаемое значение
*this
Исключения
Пример
#include <iostream>
#include <sstream>
int main()
{
std::ostringstream os("hello, world");
os.seekp(7);
os << 'W';
os.seekp(0, std::ios_base::end);
os << '!';
os.seekp(0);
os << 'H';
std::cout << os.str() << '\n';
}
Вывод:
Hello, World!
Отчёты о дефектах
Следующие отчёты о дефектах, изменяющие поведение, были ретроактивно применены к ранее опубликованным стандартам C++.
| Отчёт о дефекте | Применён к | Поведение в опубликованном стандарте | Корректное поведение |
|---|---|---|---|
| LWG 129 | C++98 | не было способа указать на ошибку | при ошибке устанавливает failbit |
| LWG 136 | C++98 |
seekp мог устанавливать входной поток | устанавливает только выходной поток |
| LWG 537 | C++98 | 1. тип pos был pos_type&2. тип off был off_type& | 1. исправлено на pos_type2. исправлено на off_type |
| LWG 2341 | C++98 | решение вопроса LWG 129 для перегрузки (2) было удалено | восстановлено |
См. также
| возвращает индикатор позиции вывода (открытая функция-член) |
|
| возвращает индикатор позиции ввода (открытая функция-член std::basic_istream<CharT,Traits>) |
|
| устанавливает индикатор позиции ввода (открытая функция-член std::basic_istream<CharT,Traits>) |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/io/basic_ostream/seekp