Binärdateien effektiv lesen und schreiben
Der Versuch, Binärdateien zu lesen und zu schreiben, bringt oft Herausforderungen mit sich, beispielsweise wenn der resultierende Puffer nur eine enthält Bruchteil der beabsichtigten Daten. Wenn dieses Problem auftritt, bietet dieser Artikel zwei alternative Ansätze, die diese Einschränkungen beheben.
C-spezifischer Ansatz
Der folgende C-Code verwendet die Kopie Funktions- und Stream-Iteratoren zum direkten Kopieren des Dateiinhalts ohne Pufferung:
#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 Ansatz behält die bei die Integrität der Datei und gewährleistet eine genaue Datenübertragung.
Pufferung mit einem Vektor
Wenn Sie den Inhalt der Datei für Änderungen in einem Puffer benötigen, verwendet der folgende Code ein Vektor und Stream-Iteratoren:
#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), {}); }
Mit dieser Lösung können Sie den Inhalt der Datei bearbeiten im Speicher, bevor sie in die gewünschte Ausgabedatei geschrieben werden.
Das obige ist der detaillierte Inhalt vonWie kann ich Binärdateien in C effizient lesen und schreiben und dabei Pufferprobleme vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!