Heim >Backend-Entwicklung >C++ >Wie kann ich Binärdateien in C effizient kopieren oder ändern?
Binärdatei-Eingabe/Ausgabe
In C umfasst das Lesen und Schreiben von Binärdateien die Verwendung spezifischer Datei-Eingabe-/Ausgabemechanismen zur Verarbeitung von Binärdaten. Während der bereitgestellte Code versucht, dies zu erreichen, tritt ein Problem auf, bei dem der Ausgabepuffer nur einen begrenzten Teil des Dateiinhalts erfasst.
C-Lösung:
Für a Für einen effizienteren und C-konformeren Ansatz sollten Sie den folgenden Codeausschnitt verwenden:
#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) ); }
In diesem überarbeiteten Code wird die Funktion std::copy verwendet um den Inhalt der Binärdatei effizient von der Eingabe-Stream-Eingabe zur Ausgabe-Stream-Ausgabe zu übertragen. Dieser Ansatz stellt sicher, dass der gesamte Inhalt von Final.gif korrekt in myfile.gif kopiert wird.
Alternative Pufferlösung:
Wenn Sie Zugriff auf die Daten in a benötigen Puffer für Änderungen können Sie den folgenden Code verwenden:
#include <fstream> #include <iterator> #include <vector> int main() { std::ifstream input("C:\Final.gif", std::ios::binary); // Copies entire file into a buffer std::vector<unsigned char> buffer(std::istreambuf_iterator<char>(input), {}); }
Hier wird der gesamte Inhalt der Eingabedatei in einen Vektorpufferpuffer eingelesen, Ermöglicht Änderungen an den Binärdaten vor möglichen Ausgabevorgängen.
Das obige ist der detaillierte Inhalt vonWie kann ich Binärdateien in C effizient kopieren oder ändern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!