Spec-Zone.ru › C++

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 - определяет базовую позицию, относительно которой применяется смещение. Может быть одной из следующих констант:
Константа Пояснение
beg начало потока
end конец потока
cur текущая позиция индикатора позиции потока

Возвращаемое значение

*this

Исключения

1,2) В случае ошибки может выбросить std::ios_base::failure, если exceptions() & failbit != 0.

Пример

#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_type
2. исправлено на off_type
LWG 2341 C++98 решение вопроса LWG 129 для перегрузки (2) было удалено восстановлено

См. также

tellp
возвращает индикатор позиции вывода
(открытая функция-член)
tellg
возвращает индикатор позиции ввода
(открытая функция-член std::basic_istream<CharT,Traits>)
seekg
устанавливает индикатор позиции ввода
(открытая функция-член 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API