Namespaces
Variants

std:: basic_osyncstream

From cppreference.net
< cpp ‎ | io
Definiert im Header <syncstream>
template <

class CharT,
class Traits = std:: char_traits < CharT > ,
class Allocator = std:: allocator < CharT >

> class basic_osyncstream : public std:: basic_ostream < CharT, Traits >
(seit C++20)

Die Klassenvorlage std::basic_osyncstream ist ein praktischer Wrapper für std::basic_syncbuf . Sie bietet einen Mechanismus zur Synchronisierung von Threads, die in denselben Stream schreiben.

Es kann mit einer benannten Variable verwendet werden:

{
    std::osyncstream synced_out(std::cout); // synchronisierter Wrapper für std::cout
    synced_out << "Hello, ";
    synced_out << "World!";
    synced_out << std::endl; // Flush wird notiert, aber noch nicht ausgeführt
    synced_out << "and more!\n";
} // Zeichen werden übertragen und std::cout wird geflusht

sowie mit einem Temporären:

std::osyncstream(std::cout) << "Hallo, " << "Welt!" << '\n';

Es bietet die Garantie, dass alle Ausgaben an denselben endgültigen Zielpuffer ( std::cout in den obigen Beispielen) frei von Datenrennen sein werden und auf keine Weise vermischt oder verstümmelt werden, solange jeder Schreibvorgang in diesen endgültigen Zielpuffer über (möglicherweise verschiedene) Instanzen von std::basic_osyncstream erfolgt.

Typische Implementierung von std::basic_osyncstream enthält nur ein Mitglied: den eingepackten std::basic_syncbuf .

cpp/io/ios base cpp/io/basic ios cpp/io/basic ostream std-basic osyncstream-inheritance.svg

Vererbungsdiagramm

Es werden mehrere Typdefinitionen für gängige Zeichentypen bereitgestellt:

Definiert in Header <syncstream>
Typ Definition
std::osyncstream std :: basic_osyncstream < char >
std::wosyncstream std :: basic_osyncstream < wchar_t >

Inhaltsverzeichnis

Mitgliedertypen

Mitgliedertyp Definition
char_type CharT
traits_type Traits ; das Programm ist fehlerhaft, wenn Traits::char_type nicht CharT ist.
int_type Traits::int_type
pos_type Traits::pos_type
off_type Traits::off_type
allocator_type Allocator
streambuf_type std:: basic_streambuf < CharT, Traits >
syncbuf_type std:: basic_syncbuf < CharT, Traits, Allocator >

Memberfunktionen

Konstruiert ein basic_osyncstream Objekt
(öffentliche Elementfunktion)
weist ein basic_osyncstream Objekt zu
(öffentliche Elementfunktion)
zerstört den basic_osyncstream und gibt seinen internen Puffer frei
(öffentliche Elementfunktion)
erhält einen Zeiger auf den zugrundeliegenden basic_syncbuf
(öffentliche Elementfunktion)
erhält einen Zeiger auf den finalen Ziel-Stream-Puffer
(öffentliche Elementfunktion)
ruft emit() auf dem zugrundeliegenden basic_syncbuf auf, um seine internen Daten an das finale Ziel zu übertragen
(öffentliche Elementfunktion)

Geerbt von std:: basic_ostream

Elementfunktionen

Formatierte Ausgabe
fügt formatierte Daten ein
(öffentliche Elementfunktion von std::basic_ostream<CharT,Traits> )
Unformatierte Ausgabe
fügt ein Zeichen ein
(öffentliche Elementfunktion von std::basic_ostream<CharT,Traits> )
fügt Zeichenblöcke ein
(öffentliche Elementfunktion von std::basic_ostream<CharT,Traits> )
Positionierung
gibt die Ausgabepositionsanzeige zurück
(öffentliche Elementfunktion von std::basic_ostream<CharT,Traits> )
setzt die Ausgabepositionsanzeige
(öffentliche Elementfunktion von std::basic_ostream<CharT,Traits> )
Verschiedenes
synchronisiert mit dem zugrundeliegenden Speichergerät
(öffentliche Elementfunktion von std::basic_ostream<CharT,Traits> )

Elementklassen

implementiert grundlegende Logik für die Vorbereitung des Streams für Ausgabeoperationen
(öffentliche Elementklasse von std::basic_ostream<CharT,Traits> )

Geerbt von std:: basic_ios

Member-Typen

Member-Typ Definition
char_type CharT
traits_type Traits
int_type Traits::int_type
pos_type Traits::pos_type
off_type Traits::off_type

Member-Funktionen

Status-Funktionen
prüft, ob kein Fehler aufgetreten ist, d.h. I/O-Operationen verfügbar sind
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
prüft, ob das Dateiende erreicht wurde
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
prüft, ob ein Fehler aufgetreten ist
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
prüft, ob ein nicht behebbarer Fehler aufgetreten ist
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
prüft, ob ein Fehler aufgetreten ist (Synonym für fail() )
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
prüft, ob kein Fehler aufgetreten ist (Synonym für ! fail() )
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
gibt Statusflags zurück
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
setzt Statusflags
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
modifiziert Statusflags
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
Formatierung
kopiert Formatierungsinformationen
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
verwaltet das Füllzeichen
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
Sonstiges
verwaltet die Ausnahmemaske
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
setzt das Locale
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
verwaltet den assoziierten Streampuffer
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
verwaltet den verknüpften Stream
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
verengt Zeichen
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )
erweitert Zeichen
(öffentliche Member-Funktion von std::basic_ios<CharT,Traits> )

Geerbt von std:: ios_base

Memberfunktionen

Formatierung
verwaltet Formatierungsflags
(öffentliche Elementfunktion von std::ios_base )
setzt spezifische Formatierungsflags
(öffentliche Elementfunktion von std::ios_base )
löscht spezifische Formatierungsflags
(öffentliche Elementfunktion von std::ios_base )
verwaltet Dezimalgenauigkeit von Gleitkommaoperationen
(öffentliche Elementfunktion von std::ios_base )
verwaltet Feldbreite
(öffentliche Elementfunktion von std::ios_base )
Locales
setzt Locale
(öffentliche Elementfunktion von std::ios_base )
gibt aktuelle Locale zurück
(öffentliche Elementfunktion von std::ios_base )
Internes erweiterbares Array
[static]
gibt eine programmweit eindeutige Ganzzahl zurück, die sicher als Index für pword() und iword() verwendet werden kann
(öffentliche statische Elementfunktion von std::ios_base )
vergrößert bei Bedarf den privaten Speicher und ermöglicht Zugriff auf das long -Element am gegebenen Index
(öffentliche Elementfunktion von std::ios_base )
vergrößert bei Bedarf den privaten Speicher und ermöglicht Zugriff auf das void * -Element am gegebenen Index
(öffentliche Elementfunktion von std::ios_base )
Verschiedenes
registriert Ereignis-Callback-Funktion
(öffentliche Elementfunktion von std::ios_base )
legt fest, ob C++ und C I/O-Bibliotheken interoperabel sind
(öffentliche statische Elementfunktion von std::ios_base )
Elementklassen
Stream-Exception
(öffentliche Elementklasse von std::ios_base )
initialisiert Standard-Stream-Objekte
(öffentliche Elementklasse von std::ios_base )

Membertypen und Konstanten

Typ Erklärung
Stream-Öffnungsmodus-Typ

Folgende Konstanten sind ebenfalls definiert:

Konstante Erklärung
app springt vor jedem Schreibvorgang zum Ende des Streams
binary öffnet im Binärmodus
in zum Lesen öffnen
out zum Schreiben öffnen
trunc verwirft den Inhalt des Streams beim Öffnen
ate springt unmittelbar nach dem Öffnen zum Ende des Streams
noreplace (C++23) im exklusiven Modus öffnen

(Typedef)
Formatierungsflags-Typ

Die folgenden Konstanten sind ebenfalls definiert:

Konstante Erklärung
dec Dezimalbasis für Integer-Ein-/Ausgabe verwenden: siehe std::dec
oct Oktalbasis für Integer-Ein-/Ausgabe verwenden: siehe std::oct
hex Hexadezimalbasis für Integer-Ein-/Ausgabe verwenden: siehe std::hex
basefield dec | oct | hex . Nützlich für Maskierungsoperationen
left Linksbündige Ausrichtung (fügt Füllzeichen rechts hinzu): siehe std::left
right Rechtsbündige Ausrichtung (fügt Füllzeichen links hinzu): siehe std::right
internal Interne Ausrichtung (fügt Füllzeichen an internem Punkt hinzu): siehe std::internal
adjustfield left | right | internal . Nützlich für Maskierungsoperationen
scientific Gleitkommatypen in wissenschaftlicher Notation oder Hex-Notation (kombiniert mit fixed ) generieren: siehe std::scientific
fixed Gleitkommatypen in Festkomma-Notation oder Hex-Notation (kombiniert mit scientific ) generieren: siehe std::fixed
floatfield scientific | fixed . Nützlich für Maskierungsoperationen
boolalpha bool -Typ im alphanumerischen Format einfügen und extrahieren: siehe std::boolalpha
showbase Präfix für numerische Basis bei Integer-Ausgabe generieren, Währungsindikator bei monetärer Ein-/Ausgabe anfordern: siehe std::showbase
showpoint Dezimalpunkt für Gleitkomma-Ausgabe immer generieren: siehe std::showpoint
showpos + -Zeichen für nicht-negative numerische Ausgabe generieren: siehe std::showpos
skipws Führende Leerzeichen vor bestimmten Eingabeoperationen überspringen: siehe std::skipws
unitbuf Ausgabe nach jeder Ausgabeoperation leeren: siehe std::unitbuf
uppercase Bestimmte Kleinbuchstaben durch Großbuchstaben in bestimmten Ausgabeoperationen ersetzen: siehe std::uppercase

(Typdefinition)
Zustandstyp des Streams

Folgende Konstanten sind ebenfalls definiert:

Konstante Erklärung
goodbit kein Fehler
badbit nicht behebbarer Stream-Fehler
failbit Ein-/Ausgabeoperation fehlgeschlagen (Formatierungs- oder Extraktionsfehler)
eofbit zugehörige Eingabesequenz hat Dateiende erreicht

(Typdefinition)
Suchrichtungstyp

Folgende Konstanten sind ebenfalls definiert:

Konstante Erklärung
beg der Anfang eines Streams
end das Ende eines Streams
cur die aktuelle Position des Stream-Positionsindikators

(Typdefinition)
gibt den Ereignistyp an
(enum)
Callback-Funktionstyp
(typedef)

Hinweise

Feature-Test Makro Wert Std Funktion
__cpp_lib_syncbuf 201803L (C++20) Synchronisierter gepufferter ostream ( std::osyncstream , std::syncbuf ) und Manipulatoren