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