Namespaces
Variants

Input/output library

From cppreference.net

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:

cpp/io/ios base cpp/io/basic ios cpp/io/basic istream cpp/io/basic ifstream cpp/io/basic istringstream cpp/io/basic ostream cpp/io/basic ofstream cpp/io/basic ostringstream cpp/io/basic fstream cpp/io/basic stringstream cpp/io/basic iostream std-io-complete-inheritance.svg

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>
implementiert ein Roh-Fixed-Character-Puffer-Gerät
(Klassentemplate)
implementiert Eingabeoperationen für feste Zeichenpuffer
(Klassentemplate)
implementiert Ausgabeoperationen für feste Zeichenpuffer
(Klassentemplate)
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>
Synchronisierte Ausgabegeräte-Wrapper
(Klassentemplate)
Synchronisierter Ausgabestrom-Wrapper
(Klassentemplate)

Typedefs

Die folgenden Typdefinitionen für gebräuchliche Zeichentypen werden im Namensraum std bereitgestellt:

Typ Definition
Definiert in Header <ios>
std::ios std:: basic_ios < char >
std::wios std:: basic_ios < wchar_t >
Definiert in Header <streambuf>
std::streambuf std:: basic_streambuf < char >
std::wstreambuf std:: basic_streambuf < wchar_t >
Definiert im Header <istream>
std::istream std:: basic_istream < char >
std::wistream std:: basic_istream < wchar_t >
std::iostream std:: basic_iostream < char >
std::wiostream std:: basic_iostream < wchar_t >
Definiert im Header <ostream>
std::ostream std:: basic_ostream < char >
std::wostream std:: basic_ostream < wchar_t >
Definiert im Header <fstream>
std::filebuf std:: basic_filebuf < char >
std::wfilebuf std:: basic_filebuf < wchar_t >
std::ifstream std:: basic_ifstream < char >
std::wifstream std:: basic_ifstream < wchar_t >
std::ofstream std:: basic_ofstream < char >
std::wofstream std:: basic_ofstream < wchar_t >
std::fstream std:: basic_fstream < char >
std::wfstream std:: basic_fstream < wchar_t >
Definiert im Header <sstream>
std::stringbuf std:: basic_stringbuf < char >
std::wstringbuf std:: basic_stringbuf < wchar_t >
std::istringstream std:: basic_istringstream < char >
std::wistringstream std:: basic_istringstream < wchar_t >
std::ostringstream std:: basic_ostringstream < char >
std::wostringstream std:: basic_ostringstream < wchar_t >
std::stringstream std:: basic_stringstream < char >
std::wstringstream std:: basic_stringstream < wchar_t >
Definiert in Header <spanstream>
std::spanbuf (C++23) std:: basic_spanbuf < char >
std::wspanbuf (C++23) std:: basic_spanbuf < wchar_t >
std::ispanstream (C++23) std:: basic_ispanstream < char >
std::wispanstream (C++23) std:: basic_ispanstream < wchar_t >
std::ospanstream (C++23) std:: basic_ospanstream < char >
std::wospanstream (C++23) std:: basic_ospanstream < wchar_t >
std::spanstream (C++23) std:: basic_spanstream < char >
std::wspanstream (C++23) std:: basic_spanstream < wchar_t >
Definiert in Header <syncstream>
std::syncbuf (C++20) std:: basic_syncbuf < char >
std::wsyncbuf (C++20) std:: basic_syncbuf < wchar_t >
std::osyncstream (C++20) std:: basic_osyncstream < char >
std::wosyncstream (C++20) std:: basic_osyncstream < wchar_t >

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)
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>
gibt eine formatierte Darstellung der Argumente aus
(Funktionstemplate)
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)