Namespaces
Variants

std:: fpos

From cppreference.net
< cpp ‎ | io
Определено в заголовочном файле <ios>
template < class State >
class fpos ;

Специализации шаблона класса std::fpos идентифицируют абсолютные позиции в потоке или файле. Каждый объект типа fpos содержит байтовую позицию в потоке (обычно как приватный член типа std::streamoff ) и текущее состояние сдвига — значение типа State (обычно std::mbstate_t ).

Следующие определения типов для std :: fpos < std:: mbstate_t > предоставляются (хотя в стандарте они записываются иначе, они обозначают один и тот же тип):

Определено в заголовочном файле <iosfwd>
Тип Определение
std::streampos std :: fpos < std:: char_traits < char > :: state_type >
std::wstreampos std :: fpos < std:: char_traits < wchar_t > :: state_type >
std::u8streampos (C++20) std :: fpos < std:: char_traits < char8_t > :: state_type >
std::u16streampos (C++11) std :: fpos < std:: char_traits < char16_t > :: state_type >
std::u32streampos (C++11) std :: fpos < std:: char_traits < char32_t > :: state_type >

Все специализации fpos удовлетворяют требованиям DefaultConstructible , CopyConstructible , CopyAssignable , Destructible и EqualityComparable .

Если State тривиально копируем, fpos имеет тривиальный конструктор копирования. Если State тривиально присваиваем, fpos имеет тривиальный оператор присваивания копированием. Если State тривиально уничтожаем, fpos имеет тривиальный деструктор.

Содержание

Параметр шаблона

State - тип, представляющий состояние сдвига
Требования к типу
-
State должен удовлетворять требованиям Destructible , CopyAssignable , CopyConstructible и DefaultConstructible .

Функции-члены

получает/устанавливает значение состояния сдвига
(публичная функция-член)

Кроме того, предоставляются функции-члены и не члены класса для поддержки следующих операций:

  • Конструктор по умолчанию, который сохраняет смещение, равное нулю, и инициализирует объект состояния значением по умолчанию.
  • Неконструктор explicit, принимающий аргумент типа (возможно const) std::streamoff , который сохраняет это смещение и инициализирует объект состояния значением по умолчанию. Этот конструктор также должен принимать специальное значение std:: streamoff ( - 1 ) : std::fpos , созданный таким образом, возвращается некоторыми операциями потоков для указания ошибок.
  • Явное преобразование из (возможно const) fpos в std::streamoff . Результатом является сохранённое смещение.
  • operator == и operator ! = , которые сравнивают два объекта типа (возможно const) std::fpos и возвращают prvalue типа bool . p ! = q эквивалентно ! ( p == q ) .
  • operator + и operator - такие, что для объекта p типа (возможно const) fpos<State> и объекта o типа (возможно const) std::streamoff
  • p + o имеет тип fpos<State> и хранит смещение, которое является результатом сложения o со смещением p .
  • o + p имеет тип, преобразуемый в fpos<State> , и результат преобразования равен p + o .
  • p - o имеет тип fpos<State> и хранит смещение, которое является результатом вычитания o из смещения p .
  • operator + = и operator - = которые могут принимать (возможно константный) std::streamoff и добавляют/вычитают его из сохраненного смещения соответственно.
  • operator - который может вычитать два объекта типа (возможно const) std::fpos , возвращая std::streamoff , так что для двух таких объектов p и q , p == q + ( p - q ) .

Примечания

Некоторые из функций-членов потоков ввода-вывода возвращают и манипулируют объектами член-typedef pos_type . Для потоков эти член-typedef предоставляются параметром шаблона Traits , который по умолчанию является std::char_traits , определяющим их pos_type как специализации std::fpos . Поведение библиотеки потоков ввода-вывода определяется реализацией, когда Traits::pos_type не является std :: fpos < std:: mbstate_t > (также известными как std::streampos , std::wstreampos и т.д.).

Отчеты о дефектах

Следующие отчеты об изменениях поведения, влияющие на дефекты, были применены задним числом к ранее опубликованным стандартам C++.

DR Применяется к Поведение в опубликованной версии Корректное поведение
LWG 57 C++98 streampos и wstreampos противоречиво
допускались разными, хотя требовались одинаковыми
уточнено, что они должны
быть одинаковыми
P0759R1 C++98 спецификация была неясной и неполной исправлена
P1148R0 C++11 неясно, что и в каком заголовочном файле находятся
определения u16streampos и u32streampos
прояснено
LWG 2114
( P2167R3 )
C++98 не- bool возвращаемые типы операций сравнения на равенство допускались запрещены

Смотрите также

представляет относительную позицию в файле/потоке (смещение от fpos), достаточную для представления любого размера файла
(typedef)
возвращает индикатор позиции вывода
(публичная функция-член std::basic_ostream<CharT,Traits> )
устанавливает индикатор позиции вывода
(публичная функция-член std::basic_ostream<CharT,Traits> )
получает индикатор позиции файла
(функция)