Namespaces
Variants

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

From cppreference.net
std:: streamsize readsome ( char_type * s, std:: streamsize count ) ;

Extrahiert bis zu count sofort verfügbare Zeichen aus dem Eingabestrom. Die extrahierten Zeichen werden im Zeichenarray gespeichert, auf das s zeigt.

Verhält sich wie eine UnformattedInputFunction . Nach dem Konstruieren und Überprüfen des Sentry-Objekts,

  • Wenn rdbuf ( ) - > in_avail ( ) == - 1 , ruft setstate ( eofbit ) auf und extrahiert keine Zeichen.
  • Wenn rdbuf ( ) - > in_avail ( ) == 0 , werden keine Zeichen extrahiert.
  • Wenn rdbuf ( ) - > in_avail ( ) > 0 , extrahiert std:: min ( rdbuf ( ) - > in_avail ( ) , count ) Zeichen und speichert sie in aufeinanderfolgenden Positionen des Zeichenarrays, dessen erstes Element durch s gezeigt wird.

Inhaltsverzeichnis

Parameter

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

Rückgabewert

Die Anzahl der tatsächlich extrahierten Zeichen.

Exceptions

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

Das Verhalten dieser Funktion ist stark implementierungsspezifisch. Beispielsweise führt die Verwendung von readsome() mit std::ifstream zu signifikanten, implementierungsspezifischen Ergebnissen. Einige Bibliotheksimplementierungen füllen den zugrundeliegenden filebuf sofort mit Daten, sobald std::ifstream eine Datei öffnet, was bedeutet, dass readsome() immer Daten liest und möglicherweise sogar die gesamte Datei einliest. Bei anderen Implementierungen liest std::ifstream erst aus einer Datei, wenn eine Eingabeoperation aufgerufen wird, was bedeutet, dass der Aufruf von readsome() unmittelbar nach dem Öffnen der Datei niemals Zeichen extrahiert. Ebenso kann der Aufruf von std:: cin . readsome ( ) alle ausstehenden, unverarbeiteten Konsoleneingaben zurückgeben oder immer null zurückgeben und keine Zeichen extrahieren.

Beispiel

#include <cassert>
#include <iostream>
#include <sstream>
int main()
{
    char c[10] = "*********"; // c[9] == '\0'
    // std::stringbuf makes its entire buffer available for unblocking read
    std::istringstream input("This is sample text.");
    auto r = input.readsome(c, 5); // reads 'This ' and stores in c[0] .. c[4]
    assert(r == 5);
    std::cout << c << '\n';
    r = input.readsome(c, 9); // reads 'is sample' and stores in c[0] .. c[8]
    assert(r == 9);
    std::cout << c << '\n';
}

Ausgabe:

This ****
is sample

Siehe auch

extrahiert Blöcke von Zeichen
(öffentliche Elementfunktion)
ermittelt die Anzahl der sofort verfügbaren Zeichen im Lesebereich
(öffentliche Elementfunktion von std::basic_streambuf<CharT,Traits> )