Input/output library
C++ beinhaltet die folgenden Eingabe-/Ausgabebibliotheken: eine OOP-orientierte Stream-basierte I/O -Bibliothek , Print-basierte Funktionsfamilie (seit C++23) , und den Standardsatz von C-style I/O -Funktionen.
Inhaltsverzeichnis |
Stream-basierte E/A
Die stream-basierte Eingabe-/Ausgabebibliothek ist um abstrakte Eingabe-/Ausgabegeräte organisiert. Diese abstrakten Geräte ermöglichen es demselben Code, Eingaben/Ausgaben zu Dateien, Speicherstreams oder benutzerdefinierten Adaptergeräten zu verarbeiten, die beliebige Operationen (z.B. Komprimierung) on-the-fly durchführen.
Die meisten Klassen sind als Templates implementiert, sodass sie an jeden grundlegenden Zeichentyp angepasst werden können. Separate Typdefinitionen sind für die gebräuchlichsten grundlegenden Zeichentypen verfügbar ( char und wchar_t ). Die Klassen sind in der folgenden Hierarchie organisiert:
Vererbungsdiagramm
Abstraktion |
|
|
Definiert in Header
<ios>
|
|
|
verwaltet Formatierungsflags und Eingabe-/Ausgabeausnahmen
(Klasse) |
|
|
verwaltet einen beliebigen Streampuffer
(Klassentemplate) |
|
|
Definiert in Header
<streambuf>
|
|
|
abstrahiert ein Rohgerät
(Klassentemplate) |
|
|
Definiert in Header
<ostream>
|
|
|
umschließt ein gegebenes abstraktes Gerät (
std::basic_streambuf
)
und bietet eine hochwertige Ausgabeschnittstelle (Klassentemplate) |
|
|
Definiert im Header
<istream>
|
|
|
umschließt ein gegebenes abstraktes Gerät (
std::basic_streambuf
)
und bietet eine hochwertige Eingabeschnittstelle (Klassentemplate) |
|
|
umschließt ein gegebenes abstraktes Gerät (
std::basic_streambuf
)
und bietet eine hochwertige Eingabe/Ausgabe-Schnittstelle (Klassentemplate) |
|
Datei-I/O-Implementierung |
|
|
Definiert in Header
<fstream>
|
|
|
implementiert Rohdatei-Gerät
(Klassentemplate) |
|
|
implementiert High-Level-Dateistrom-Eingabeoperationen
(Klassentemplate) |
|
|
implementiert High-Level-Dateistream-Ausgabeoperationen
(Klassentemplate) |
|
|
implementiert hochlevel Dateistrom-Ein-/Ausgabeoperationen
(Klassentemplate) |
|
String-I/O-Implementierung |
|
|
Definiert in Header
<sstream>
|
|
|
implementiert Roh-String-Gerät
(Klassentemplate) |
|
|
implementiert High-Level String-Stream-Eingabeoperationen
(Klassentemplate) |
|
|
implementiert High-Level String-Stream-Ausgabeoperationen
(Klassentemplate) |
|
|
implementiert High-Level String-Stream-Ein-/Ausgabeoperationen
(Klassentemplate) |
|
Array-I/O-Implementierungen |
|
|
Definiert in Header
<spanstream>
|
|
|
(C++23)
|
implementiert ein Roh-Fixed-Character-Puffer-Gerät
(Klassentemplate) |
|
(C++23)
|
implementiert Eingabeoperationen für feste Zeichenpuffer
(Klassentemplate) |
|
(C++23)
|
implementiert Ausgabeoperationen für feste Zeichenpuffer
(Klassentemplate) |
|
(C++23)
|
implementiert Eingabe-/Ausgabeoperationen für feste Zeichenpuffer
(Klassentemplate) |
|
Definiert im Header
<strstream>
|
|
|
(in C++98 veraltet)
(in C++26 entfernt)
|
implementiert ein Roh-Zeichenarray-Gerät
(Klasse) |
|
(in C++98 veraltet)
(in C++26 entfernt)
|
implementiert Zeichenarray-Eingabeoperationen
(Klasse) |
|
(veraltet in C++98)
(entfernt in C++26)
|
implementiert Zeichenarray-Ausgabeoperationen
(Klasse) |
|
(veraltet in C++98)
(entfernt in C++26)
|
implementiert Eingabe-/Ausgabeoperationen für Zeichenarrays
(Klasse) |
Synchronisierte Ausgabe (since C++20) |
|
|
Definiert im Header
<syncstream>
|
|
|
(C++20)
|
Synchronisierte Ausgabegeräte-Wrapper
(Klassentemplate) |
|
(C++20)
|
Synchronisierter Ausgabestrom-Wrapper
(Klassentemplate) |
Typedefs
Die folgenden Typdefinitionen für gebräuchliche Zeichentypen werden im Namensraum
std
bereitgestellt:
Vordefinierte Standard-Stream-Objekte
|
Definiert im Header
<iostream>
|
|
|
liest vom standard C-Eingabestrom
stdin
(globales Objekt) |
|
|
schreibt in den standard C-Ausgabestrom
stdout
(globales Objekt) |
|
|
schreibt in den standard C-Fehlerstrom
stderr
, ungepuffert
(globales Objekt) |
|
|
schreibt in den standard C-Fehlerstrom
stderr
(globales Objekt) |
|
I/O-Manipulatoren
Die stream-basierte E/A-Bibliothek verwendet I/O-Manipulatoren (z.B. std::boolalpha , std::hex , etc.), um das Verhalten von Streams zu steuern.
Typen
Die folgenden Hilfstypen sind definiert:
|
Definiert im Header
<ios>
|
|
|
repräsentiert relative Datei-/Stream-Position (Offset von fpos), ausreichend um jede Dateigröße darzustellen
(typedef) |
|
|
repräsentiert die Anzahl der übertragenen Zeichen in einem I/O-Vorgang oder die Größe eines I/O-Puffers
(typedef) |
|
|
repräsentiert absolute Position in einem Stream oder einer Datei
(class template) |
|
Die folgenden Typedef-Namen für std:: fpos < std:: mbstate_t > werden bereitgestellt:
|
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 > |
Fehlerkategorie-Schnittstelle (seit C++11)
|
Definiert im Header
<ios>
|
|
|
(C++11)
|
die IO-Stream-Fehlercodes
(enum) |
|
(C++11)
|
identifiziert die iostream-Fehlerkategorie
(Funktion) |
Druckfunktionen (since C++23)
Die Unicode-fähigen Print-Funktionen, die formatierten I/O auf bereits formatiertem Text durchführen. Sie bieten alle Leistungsvorteile von std::format , sind standardmäßig gebietsschemaineu, reduzieren globalen Zustand, vermeiden die Allokation eines temporären std::string -Objekts und den Aufruf von operator << und machen die Formatierung im Allgemeinen effizienter im Vergleich zu iostreams und stdio .
Die folgenden druckähnlichen Funktionen werden bereitgestellt:
|
Definiert im Header
<print>
|
|
|
(C++23)
|
gibt auf
stdout
oder einen Dateistrom unter Verwendung einer
formatierten
Darstellung der Argumente aus
(Funktionstemplate) |
|
(C++23)
|
identisch mit
std::print
, außer dass jede Ausgabe durch eine zusätzliche neue Zeile abgeschlossen wird
(Funktionstemplate) |
|
gibt auf Unicode-fähigem
stdout
oder einem Dateistrom unter Verwendung einer
typeradierten
Argumentdarstellung aus
(Funktion) |
|
|
gibt auf
stdout
oder einem Dateistrom unter Verwendung einer
typeradierten
Argumentdarstellung aus
(Funktion) |
|
|
Definiert im Header
<ostream>
|
|
|
(C++23)
|
gibt eine
formatierte
Darstellung der Argumente aus
(Funktionstemplate) |
|
(C++23)
|
gibt eine
formatierte
Darstellung der Argumente mit angehängtem
'
\n
'
aus
(Funktionstemplate) |
C-style I/O
C++ beinhaltet auch die von C definierten Eingabe/Ausgabe-Funktionen , wie z.B. std::fopen , std::getc , etc.
Siehe auch
| Filesystem-Bibliothek (seit C++17) |