Heim >Backend-Entwicklung >C++ >Wie lese und schreibe ich ganze Binärdateien in C richtig?
Binärdateien lesen und schreiben
Beim Versuch, eine Binärdatei in einen Puffer zu lesen und anschließend den Puffer in eine andere Datei zu schreiben, ist dies der Fall Es ist von entscheidender Bedeutung, den richtigen Ansatz zu verwenden. Das bereitgestellte Codefragment stößt auf einen Fehler, bei dem der Puffer nur einige ASCII-Zeichen aus der ersten Zeile der Datei erfasst und nicht den gesamten Inhalt abrufen kann.
Um dieses Problem zu beheben, gibt es zwei empfohlene Ansätze:
Verwendung des C-Ansatzes:
Verwendung von Cs Stream-Iterationsfunktionen kopiert der folgende Code effektiv den Inhalt der Eingabe-Binärdatei in die Ausgabedatei:
#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)); }
Verwenden eines Puffers für Änderungen:
Wenn die Daten zu Änderungszwecken in einem Puffer gespeichert werden müssen, kann der folgende Ansatz verwendet werden eingesetzt:
#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), {}); }
Durch die Implementierung dieser Techniken liest der Code die gesamte Binärdatei erfolgreich in einen Puffer oder direkt in die Ausgabedatei ein und gewährleistet so eine genaue Datenübertragung und -manipulation.
Das obige ist der detaillierte Inhalt vonWie lese und schreibe ich ganze Binärdateien in C richtig?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!