Namensräume
Varianten
Aktionen

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

Von cppreference.com
< cpp‎ | io‎ | basic istream
 
 
 
 
basic_istream& read( char_type* s, std::streamsize count );

Extrahiert Zeichen aus dem Stream.

Verhält sich wie ein UnformattedInputFunction. Nach der Erstellung und Überprüfung des Sentry-Objekts werden Zeichen extrahiert und in aufeinanderfolgenden Speicherplätzen des Zeichenarrays gespeichert, dessen erstes Element von s gezeigt wird. Zeichen werden extrahiert und gespeichert, bis eine der folgenden Bedingungen eintritt:

  • count Zeichen wurden extrahiert und gespeichert.
  • Die End-of-File-Bedingung tritt in der Eingabesequenz ein (in diesem Fall wird setstate(failbit|eofbit) aufgerufen). Die Anzahl der erfolgreich extrahierten Zeichen kann mit gcount() abgefragt werden.

Inhalt

[edit] Parameter

s - Zeiger auf das Zeichenarray, in dem die Zeichen gespeichert werden sollen
zählt - Anzahl der zu lesenden Zeichen

[edit] Rückgabewert

*this

[edit] Ausnahmen

failure, wenn ein Fehler aufgetreten ist (der Fehlerstatus-Flag ist nicht goodbit) und exceptions() für diesen Zustand zum Werfen gesetzt ist.

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

[edit] Anmerkungen

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

[edit] Beispiel

#include <cstdint>
#include <fstream>
#include <iostream>
#include <sstream>
#include <string>
 
int main()
{
    // read() is often used for binary I/O
    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';
 
    // prepare file for next snippet
    std::ofstream("test.txt", std::ios::binary) << "abcd1\nabcd2\nabcd3";
 
    // read entire file into string
    if (std::ifstream is{"test.txt", std::ios::binary | std::ios::ate})
    {
        auto size = is.tellg();
        std::string str(size, '\0'); // construct string to stream size
        is.seekg(0);
        if (is.read(&str[0], size))
            std::cout << str << '\n';
    }
}

Ausgabe

0x12121212
abcd1
abcd2
abcd3

[edit] Siehe auch

fügt Zeichenblöcke ein
(public member function of std::basic_ostream<CharT,Traits>) [bearbeiten]
extrahiert formatierte Daten
(public member function) [bearbeiten]
extrahiert bereits verfügbare Zeichenblöcke
(public member function) [bearbeiten]
extrahiert Zeichen
(public member function) [bearbeiten]
extrahiert Zeichen, bis das gegebene Zeichen gefunden wird
(public member function) [bearbeiten]
liest aus einer Datei
(function) [bearbeiten]