std::basic_istream<CharT,Traits>:: readsome
|
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
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>
)
|