Namespaces
Variants

std:: fpos

From cppreference.net
< cpp ‎ | io
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::fpos wird von einigen Stream-Operationen zurückgegeben, um Fehler anzuzeigen.
  • Explizite Konvertierung von (möglicherweise const) fpos zu std::streamoff . Das Ergebnis ist der gespeicherte Offset.
  • operator == und operator ! = , die zwei Objekte des Typs (möglicherweise const) std::fpos vergleichen 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.
  • 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::fpos subtrahieren 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)