Heim >Backend-Entwicklung >C++ >Wie kann ich Binärdateien in C effizient lesen und schreiben und dabei Datenverlust vermeiden?
Manipulation von Binärdateien: Lesen und Schreiben
Im Bereich der Programmierung kann der Umgang mit Binärdateien einzigartige Herausforderungen darstellen. Eine häufige Aufgabe besteht darin, eine Binärdatei in einen Puffer einzulesen und sie anschließend in eine andere Datei zu schreiben. Bei bestimmten Ansätzen können jedoch Einschränkungen auftreten, die möglicherweise zu Dateninkonsistenzen führen.
Problemstellung
Ein solcher Ansatz umfasst die Verwendung eines char-Array-Puffers und die manuelle Verwaltung der Datei-E/A Operationen. Allerdings führt diese Methode oft zu einem Puffer, der nur wenige ASCII-Zeichen aus der ersten Zeile der Datei erfasst, sodass auf die restlichen Daten nicht zugegriffen werden kann.
Lösung für C
Die Die Programmiersprache C bietet eine robustere und effizientere Möglichkeit zur Manipulation von Binärdateien. Der folgende Code demonstriert einen erweiterten Ansatz:
#include <fstream> #include <iterator> #include <algorithm> int main() { std::ifstream input("C:\Final.gif", std::ios::binary); std::ofstream output("C:\myfile.gif", std::ios::binary); std::copy( std::istreambuf_iterator<char>(input), std::istreambuf_iterator<char>(), std::ostreambuf_iterator<char>(output)); }
Dieser Code verwendet die Klassen std::ifstream und std::ofstream für Eingabe- und Ausgabevorgänge. Die std::copy-Funktion überträgt effektiv den gesamten Inhalt der Eingabedatei in die Ausgabedatei und spiegelt nahtlos deren Binärdaten wider.
Alternative Lösung für die Pufferung
Wenn Sie Wenn Sie für Änderungen vor dem Schreiben auf die Binärdaten in einem Puffer zugreifen müssen, ziehen Sie den folgenden Ansatz in Betracht:
#include <fstream> #include <iterator> #include <vector> int main() { std::ifstream input("C:\Final.gif", std::ios::binary); // Copies all data into buffer std::vector<unsigned char> buffer(std::istreambuf_iterator<char>(input), {}); }
Dieser Ansatz verwendet a std::vector, um die Binärdaten zu sammeln, auf die dann bei Bedarf zur Änderung zugegriffen werden kann, bevor sie in eine Zieldatei geschrieben werden.
Das obige ist der detaillierte Inhalt vonWie kann ich Binärdateien in C effizient lesen und schreiben und dabei Datenverlust vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!