Schreiben Sie eine Binärdatei in C++

Schreiben Sie Eine Binardatei In C



Bei der C++-Programmierung ist der Umgang mit Binärdateien für die Speicherung und Bearbeitung der Rohdaten von grundlegender Bedeutung. Unabhängig davon, ob Sie mit Bildern, Audiodateien oder benutzerdefinierten Datenstrukturen arbeiten, ist die Fähigkeit, die Binärdateien effizient zu schreiben, von entscheidender Bedeutung. Binärdateien speichern die Daten in einem Format, das nicht für Menschen lesbar ist, wodurch sie für verschiedene Anwendungen geeignet sind, z. B. zum Speichern komplexer Strukturen, Bilder oder anderer Daten, die keiner einfachen textbasierten Darstellung folgen.

C++ stellt die -Bibliothek zur Interaktion mit Binärdateien, insbesondere der „ofstream“-Klasse, zum Schreiben der Binärdaten bereit. Diese Funktion ermöglicht es den Entwicklern, die Binärdateien nahtlos zu erstellen, zu ändern und zu verwalten. Dieser Artikel untersucht die verschiedenen Methoden und Techniken zum Schreiben der Binärdateien in C++ und beleuchtet ihre Anwendungen und Anwendungsfälle.

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(&person1)“ und „reinterpret_cast(&person2)“ konvertieren die gesamte „Person“-Struktur (einschließlich aller ihrer Felder) in einen kontinuierlichen Bytestrom, der zum Schreiben in die Binärdatei geeignet ist . Wir schreiben die Größe jedes „Person“-Objekts mithilfe von „sizeof(person1)“ und „sizeof(person2)“, um sicherzustellen, dass alle Daten korrekt geschrieben werden.



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“ behandelt das Integer-Array als eine Folge von Zeichen (Bytes) zum Schreiben in die Datei. Dies ist besonders wichtig, da Binärdateien rohe Bytedaten verarbeiten. Schauen wir uns das folgende einfache Beispiel an:

#include

#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 “ und „#include “ bringen die notwendigen Tools zum Arbeiten mit Dateien und zum Drucken der Nachrichten wie cin bzw. write() mit. Das „std::ofstream outFile(“integers.bin“, std::ios::binary);“ öffnet eine Binärdatei mit dem Namen „integers.bin“, die die Zahlen nur in einem Geheimcode (Binärformat) speichern kann. Es prüft, ob die Datei geöffnet ist. Andernfalls wird eine Fehlermeldung ausgegeben.

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(numbers), sizeof(numbers));“ übersetzt die Ganzzahlen sorgfältig in das Binärformat und schreibt sie in die Datei „integer.bin“. Das „outFile.close();“ Schließt die Datei korrekt, um die Ganzzahlen sicher und organisiert zu halten. Abschließend wird eine Meldung ausgegeben, die bestätigt, dass die Ganzzahlen erfolgreich in der Binärdatei gespeichert wurden. Sehen Sie sich die folgende Ausgabe dieses Programms an, um das Ergebnis zu sehen:

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.