Heim >Backend-Entwicklung >C++ >Wie lese und schreibe ich ganze Binärdateien in C richtig?

Wie lese und schreibe ich ganze Binärdateien in C richtig?

Linda Hamilton
Linda HamiltonOriginal
2025-01-03 14:25:40476Durchsuche

How to Correctly Read and Write Entire Binary Files in C  ?

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:

  1. 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));
    }
  2. 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!

Stellungnahme:
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