std::basic_istream<CharT,Traits>::read
| 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
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>) | |
| extrahiert formatierte Daten (public member function) | |
| extrahiert bereits verfügbare Zeichenblöcke (public member function) | |
| extrahiert Zeichen (public member function) | |
| extrahiert Zeichen, bis das gegebene Zeichen gefunden wird (public member function) | |
| liest aus einer Datei (function) |