std:: fpos
|
Определено в заголовочном файле
<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 .
-
p
+
o
имеет тип
- 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>
)
|
|
|
получает индикатор позиции файла
(функция) |