Namespaces
Variants

std::basic_istream<CharT,Traits>:: read

From cppreference.net
basic_istream & read ( char_type * s, std:: streamsize count ) ;

Extrahiert Zeichen aus dem Stream.

Verhält sich wie eine UnformattedInputFunction . Nach dem Konstruieren und Überprüfen des Sentry-Objekts extrahiert es Zeichen und speichert sie aufeinanderfolgend im Zeichenarray, dessen erstes Element durch s gezeigt wird. Zeichen werden extrahiert und gespeichert, bis eine der folgenden Bedingungen eintritt:

  • count Zeichen wurden extrahiert und gespeichert.
  • Das Dateiende tritt in der Eingabesequenz auf (in diesem Fall wird setstate ( failbit | eofbit ) aufgerufen). Die Anzahl der erfolgreich extrahierten Zeichen kann mit gcount() abgefragt werden.

Inhaltsverzeichnis

Parameter

s - Zeiger auf das Zeichenarray zum Speichern der Zeichen
count - Anzahl der zu lesenden Zeichen

Rückgabewert

* this

Ausnahmen

failure if an error occurred (the error state flag is not goodbit ) and exceptions() is set to throw for that state.

Wenn eine interne Operation eine Ausnahme auslöst, wird diese abgefangen und badbit wird gesetzt. Wenn exceptions() für badbit gesetzt ist, wird die Ausnahme erneut ausgelöst.

Hinweise

Bei Verwendung einer nicht-konvertierenden Locale (die Standard-Locale ist nicht-konvertierend) kann die Überschreibung dieser Funktion in std::basic_ifstream für Zero-Copy-Bulk-I/O optimiert werden (durch Überschreiben von std::streambuf::xsgetn ).

Beispiel

#include <cstdint>
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
int main()
{
    // read() wird häufig für binäre E/A verwendet
    std::string bin = {'\x12', '\x12', '\x12', '\x12'};
    std::istringstream raw(bin);
    std::uint32_t n;
    if (raw.read(reinterpret_cast<char*>(&n), sizeof n))
        std::cout << std::hex << std::showbase << n << '\n';
    // Datei für nächsten Ausschnitt vorbereiten
    std::ofstream("test.txt", std::ios::binary) << "abcd1\nabcd2\nabcd3";
    // gesamte Datei in String einlesen
    if (std::ifstream is{"test.txt", std::ios::binary | std::ios::ate})
    {
        auto size = is.tellg();
        std::string str(size, '\0'); // String auf Stream-Größe konstruieren
        is.seekg(0);
        if (is.read(&str[0], size))
            std::cout << str << '\n';
    }
}

Ausgabe:

0x12121212
abcd1
abcd2
abcd3

Siehe auch

fügt Zeichenblöcke ein
(öffentliche Elementfunktion von std::basic_ostream<CharT,Traits> )
extrahiert formatierte Daten
(öffentliche Elementfunktion)
extrahiert bereits verfügbare Zeichenblöcke
(öffentliche Elementfunktion)
extrahiert Zeichen
(öffentliche Elementfunktion)
extrahiert Zeichen bis zum gefundenen Trennzeichen
(öffentliche Elementfunktion)
liest aus einer Datei
(Funktion)