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 (кроме фактического выполнения вывода). После построения и проверки объекта-стражи,

(с 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++.

DR Применено к Поведение, как опубликовано Корректное поведение
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 issue 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/w/cpp/io/basic_ostream/seekp

Spec-Zone.ru

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