C++ stellt die
Schreiben Sie eine Binärdatei mit C++
Um die Daten mit C++ in einer Binärdatei zu speichern, wird die Methode write() verwendet. Diese Funktion schreibt eine angegebene Anzahl von Bytes in den angegebenen Stream, beginnend an der Position des „Put“-Zeigers. Befindet sich der „Put“-Zeiger am Ende, wird die Datei erweitert. Die neuen Daten überschreiben jedoch die vorhandenen Zeichen, wenn sich der Zeiger innerhalb der Datei befindet. Tritt während des Schreibvorgangs ein Fehler auf, wird der Stream als fehlerhaft markiert. Kommen wir nun zu den Beispielen, um zu lernen, wie man mit einigen einfachen und integrierten C++-Funktionen in eine Binärdatei schreibt.
Methode 1: Binärdateien mit strukturierten Daten schreiben
In vielen Fällen müssen Sie möglicherweise strukturierte Daten, z. B. benutzerdefinierte Strukturen, in eine Binärdatei schreiben. Betrachten wir ein Beispiel, das einen Datensatz einer Person enthält, der den Namen, die Größe und das Alter einer Person enthält. Sehen Sie sich den folgenden Code an und werfen Sie einen Blick auf die Erklärung:
#include
#include
Struktur Person {
verkohlen Name [ fünfzig ] ;
int Alter ;
doppelt Höhe ;
} ;
int hauptsächlich ( ) {
std :: ofstream outFile ( „people.bin“ , std :: ios :: binär ) ;
Wenn ( ! outFile. ist offen ( ) ) {
std :: cerr << „Fehler! Datei kann nicht zum Schreiben geöffnet werden!“ << std :: endl ;
zurückkehren 1 ;
}
Person person1 = { „Kalsoom Ilyas“ , 25 , 1,75 } ;
Person person2 = { „Kalsoom Bajwa“ , 30 , 1,68 } ;
outFile. schreiben ( reinterpret_cast < verkohlen *> ( & Person 1 ) , Größe von ( Person 1 ) ) ;
outFile. schreiben ( reinterpret_cast < verkohlen *> ( & Person2 ) , Größe von ( Person2 ) ) ;
outFile. schließen ( ) ;
std :: cout << „Der Datensatz der Person wurde erfolgreich in die Binärdatei geschrieben.“ << std :: endl ;
zurückkehren 0 ;
}
Hier ist eine Aufschlüsselung des Codes mit den spezifischen Details. Das Programm beginnt mit der Definition einer benutzerdefinierten Struktur namens „Person“. Es besteht aus drei Feldern: Name, Alter und Größe. Die Details dieser Felder lauten wie folgt:
- Name: Eine Zeichenfolge zum Speichern des Namens der Person (bis zu 50 Zeichen)
- Alter: Eine Ganzzahl zum Speichern des Alters der Person
- Höhe: Ein Double zur Speicherung der Körpergröße der Person
Nach der Definition der Struktur „Person“ startet die Hauptfunktion, die den Einstiegspunkt des Programms darstellt. Die erste Zeile im Hauptprogramm öffnet eine Datei namens „people.bin“. Wir verwenden „std::ofstream“, um eine Datei mit dem Namen „people.bin“ zu erstellen, um die Daten im Binärformat zu schreiben. Es ist sehr wichtig zu überprüfen, ob die Datei erfolgreich geöffnet wurde. Andernfalls wird eine Fehlermeldung angezeigt und das Programm stoppt. Daher prüfen wir mit Hilfe der „if“-Bedingung und der Funktion is_open(), ob die Datei erfolgreich geöffnet wurde oder nicht.
Hier werden die beiden „Person“-Objekte erstellt. Wir definieren zwei Variablen, „person1“ und „person2“, vom Typ „Person“. Wir weisen den Variablennamen, Alter und Größenwerte für „Kalsoom Ilyas“ und „Kalsoom Bajwa“ zu.
Nachdem wir nun die Daten zum Schreiben in eine Binärdatei haben, führen wir die eigentliche Funktion mit der Funktion write() aus. Wir verwenden „outFile.write“, um den Inhalt jedes „Person“-Objekts in die Datei zu schreiben. „reinterpret_cast
Nach dem Schreiben der Daten in die Datei ist es sehr wichtig, diese ordnungsgemäß zu schließen, damit keine Daten aufgrund einer anderen Funktion verloren gehen. Wir verwenden outFile.close(), um die mit der Datei verknüpften Ressourcen freizugeben und sicherzustellen, dass die Daten korrekt geschrieben werden. Abschließend drucken wir eine Meldung aus, die das erfolgreiche Schreiben der Daten in die Binärdatei bestätigt.
Wenn wir dieses Beispiel einfacher erklären, stellen wir uns ein spezielles Notizbuch vor, das nur Informationen über Personen in einer Geheimsprache speichern kann. Dieser Code erstellt eine Blaupause zum Organisieren der Informationen (Name, Alter, Größe). Es öffnet das Notizbuch, füllt die Profile für zwei Personen aus, übersetzt die Informationen in die Geheimsprache und schreibt sie ordentlich hinein. Anschließend wird das Notebook sicher verschlossen und die Profile bleiben für die zukünftige Verwendung erhalten. Sehen Sie sich die Ausgabe des Programms an, die im folgenden Schnappschuss dargestellt ist:
Methode 2: Ganzzahlen in eine Binärdatei schreiben
Bei dieser Methode wird ein Array von Ganzzahlen in eine Binärdatei mit dem Namen „integers.bin“ geschrieben. Der „reinterpret_cast
#include
int hauptsächlich ( ) {
std :: ofstream outFile ( „integers.bin“ , std :: ios :: binär ) ;
Wenn ( ! outFile. ist offen ( ) ) {
std :: cerr << „Fehler! Datei kann nicht zum Schreiben geöffnet werden!“ << std :: endl ;
zurückkehren 1 ;
}
int Zahlen [ ] = { 42 , 99 , - 1 , 0 } ;
outFile. schreiben ( reinterpret_cast < verkohlen *> ( Zahlen ) , Größe von ( Zahlen ) ) ;
outFile. schließen ( ) ;
std :: cout << „Die angegebenen Ganzzahlen wurden erfolgreich in die Binärdatei geschrieben.“ << std :: endl ;
zurückkehren 0 ;
}
Hier ist eine Aufschlüsselung des Codes mit den spezifischen Details:
„#include
Die nächste Zeile lautet „int zahlen[] = {42, 99, -1, 0};“ definiert ein Array namens „numbers“ mit den Ganzzahlen 42, 99, -1 und 0. Das „outFile.write(reinterpret_cast
Abschluss
Das Schreiben von Binärdateien in C++ ist eine entscheidende Fähigkeit für den effizienten Umgang mit den verschiedenen Datentypen. Bei dieser Untersuchung des Schreibens von Binärdateien in C++ haben wir gelernt, wie die „ofstream“-Klasse verwendet werden kann, um die Binärdaten effizient zu verarbeiten. Unabhängig davon, ob es sich um einfache Ganzzahlen oder strukturierte Daten mithilfe benutzerdefinierter Strukturen handelt, umfasst der Prozess das Öffnen eines Dateistreams, das Schreiben der Daten im Binärformat und das anschließende Schließen der Datei. Diese Fähigkeit bietet den C++-Entwicklern die Flexibilität, mit einer Vielzahl binärer Datentypen zu arbeiten, was zur Vielseitigkeit der Sprache in Anwendungen beiträgt, die von der Programmierung auf Systemebene bis zur Multimedia-Verarbeitung reichen.