Heim > Backend-Entwicklung > C++ > Wie kann ich Binärdateien in C effizient kopieren oder ändern?

Wie kann ich Binärdateien in C effizient kopieren oder ändern?

Patricia Arquette
Freigeben: 2024-12-29 03:41:14
Original
661 Leute haben es durchsucht

How Can I Efficiently Copy or Modify Binary Files in C  ?

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)
    );
}
Nach dem Login kopieren

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), {});
}
Nach dem Login kopieren

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!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage