std:: fpos
|
Definiert im Header
<ios>
|
||
|
template
<
class
State
>
class fpos ; |
||
Spezialisierungen der Klassenvorlage
std::fpos
identifizieren absolute Positionen in einem Stream oder in einer Datei. Jedes Objekt vom Typ
fpos
speichert die Byteposition im Stream (typischerweise als privates Mitglied vom Typ
std::streamoff
) und den aktuellen Shift-Zustand, einen Wert vom Typ
State
(typischerweise
std::mbstate_t
).
Die folgenden Typedef-Namen für std :: fpos < std:: mbstate_t > werden bereitgestellt (obwohl sie im Standard anders geschrieben sind, bezeichnen sie denselben Typ):
|
Definiert im Header
<iosfwd>
|
|
| Typ | Definition |
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 > |
Alle Spezialisierungen von
fpos
erfüllen die Anforderungen
DefaultConstructible
,
CopyConstructible
,
CopyAssignable
,
Destructible
und
EqualityComparable
.
Wenn
State
trivial kopierkonstruierbar ist,
fpos
hat einen trivialen Kopierkonstruktor.
Wenn
State
trivial kopierzuweisbar ist,
fpos
hat einen trivialen Kopierzuweisungsoperator.
Wenn
State
trivial zerstörbar ist,
fpos
hat einen trivialen Destruktor.
Inhaltsverzeichnis |
Template-Parameter
| State | - | der Typ, der den Schaltzustand repräsentiert |
| Typanforderungen | ||
-
State
muss die Anforderungen von
Destructible
,
CopyAssignable
,
CopyConstructible
und
DefaultConstructible
erfüllen.
|
||
Memberfunktionen
|
ruft/setzt den Wert des Shift-Zustands ab
(öffentliche Elementfunktion) |
Zusätzlich werden Member- und Non-Member-Funktionen bereitgestellt, um die folgenden Operationen zu unterstützen:
- Ein Standardkonstruktor, der einen Offset von Null speichert und das Zustandsobjekt wertinitialisiert.
-
Ein nicht-expliziter Konstruktor, der ein Argument vom Typ (möglicherweise const)
std::streamoff
akzeptiert, welcher diesen Offset speichert und das Zustandsobjekt wertinitialisiert. Dieser Konstruktor muss ebenfalls den speziellen Wert
std::
streamoff
(
-
1
)
akzeptieren: Das auf diese Weise konstruierte
std::fposwird von einigen Stream-Operationen zurückgegeben, um Fehler anzuzeigen.
-
Explizite Konvertierung von (möglicherweise const)
fposzu std::streamoff . Das Ergebnis ist der gespeicherte Offset.
-
operator
==
und
operator
!
=
, die zwei Objekte des Typs (möglicherweise const)
std::fposvergleichen und einen bool -Prvalue zurückgeben. p ! = q ist äquivalent zu ! ( p == q ) .
-
operator
+
und
operator
-
derart, dass für ein Objekt
p
vom Typ (möglicherweise const)
fpos<State>und ein Objekt o vom Typ (möglicherweise const) std::streamoff
-
-
p
+
o
hat den Typ
fpos<State>und speichert einen Offset, der durch Addition von o zum Offset von p resultiert. -
o
+
p
hat einen in
fpos<State>konvertierbaren Typ, und das Ergebnis der Konvertierung entspricht p + o . -
p
-
o
hat den Typ
fpos<State>und speichert einen Offset, der durch Subtraktion von o vom Offset von p resultiert.
-
p
+
o
hat den Typ
- operator + = und operator - = , die einen (möglicherweise const) std::streamoff akzeptieren und diesen vom gespeicherten Offset addieren/subtrahieren.
-
operator
-
der zwei Objekte vom Typ (möglicherweise const)
std::fpossubtrahieren kann und ein std::streamoff erzeugt, sodass für zwei solche Objekte p und q gilt: p == q + ( p - q ) .
Hinweise
Einige der
I/O-Stream-Memberfunktionen
geben Objekte des Member-Typedefs
pos_type
zurück und manipulieren diese. Für Streams werden diese Member-Typedefs durch den Template-Parameter
Traits
bereitgestellt, der standardmäßig auf
std::char_traits
gesetzt ist, welche ihre
pos_type
s als Spezialisierungen von
std::fpos
definieren. Das Verhalten der I/O-Streams-Bibliothek ist implementierungsdefiniert, wenn
Traits::pos_type
nicht
std
::
fpos
<
std::
mbstate_t
>
(auch bekannt als
std::streampos
,
std::wstreampos
, etc.) ist.
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrigiertes Verhalten |
|---|---|---|---|
| LWG 57 | C++98 |
streampos
und
wstreampos
waren widersprüchlich
erlaubt, unterschiedlich zu sein, während sie gleich sein mussten |
klargestellt, dass sie
gleich sind |
| P0759R1 | C++98 | Spezifikation war unklar und unvollständig | bereinigt |
| P1148R0 | C++11 |
unklar, was und in welchem Header die
Definitionen
u16streampos
und
u32streampos
sind
|
klargestellt |
|
LWG 2114
( P2167R3 ) |
C++98 | Nicht- bool Rückgabetypen von Gleichheitsvergleichen waren erlaubt | untersagt |
Siehe auch
|
repräsentiert relative Datei-/Stream-Position (Offset von fpos), ausreichend um jede Dateigröße darzustellen
(typedef) |
|
|
gibt die Ausgabepositionsanzeige zurück
(öffentliche Elementfunktion von
std::basic_ostream<CharT,Traits>
)
|
|
|
setzt die Ausgabepositionsanzeige
(öffentliche Elementfunktion von
std::basic_ostream<CharT,Traits>
)
|
|
|
ruft die Dateipositionsanzeige ab
(Funktion) |