Heim  >  Artikel  >  Backend-Entwicklung  >  Wie lese ich effizient alle Bytes aus einer Datei in ein Zeichenarray in C?

Wie lese ich effizient alle Bytes aus einer Datei in ein Zeichenarray in C?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-02 02:16:30539Durchsuche

How to Efficiently Read All Bytes from a File into a Character Array in C  ?

So rufen Sie alle Bytes aus einer Datei in ein Zeichenarray in C ab

Angenommen, eine Datei befindet sich unter „C:MyFile.csv“ und ein Zeichenarray-Puffer von Größe 10.000, wie können Sie alle Bytes aus der Datei effizient in den Puffer einlesen?

Betrachten Sie den folgenden Ansatz, der in diesem Szenario im Allgemeinen der Verwendung von getline() vorgezogen wird:

<code class="cpp">// Open the file in binary mode to preserve byte-by-byte fidelity
std::ifstream infile("C:\MyFile.csv", std::ios_base::binary);

// Determine the file's size
infile.seekg(0, std::ios::end);
size_t file_size = infile.tellg();
infile.seekg(0, std::ios::beg);

// Ensure that the buffer is of sufficient size
if (file_size > sizeof(buffer)) {
    // Handle the case where the file exceeds the buffer's capacity
}

// Read the entire file's contents into the buffer
infile.read(buffer, file_size);

// Obtain the actual number of bytes read from the file
std::streamsize bytes_read = infile.gcount();</code>

Zusätzliche Hinweise:

  • Die Verwendung von seeng() und tellg() zur Bestimmung der Dateigröße ist im Allgemeinen zuverlässig, aber nicht garantiert. Erwägen Sie daher eine zusätzliche Fehlerbehandlung.
  • Wenn die Datei im nicht-binären Modus geöffnet wird, können einige Zeichenübersetzungen auftreten, was möglicherweise dazu führt, dass die Dateigröße von der Anzahl der letztendlich im Puffer gespeicherten Bytes abweicht.
  • Für größere Dateien oder Fälle, in denen Sie Puffer mit veränderbarer Größe bevorzugen Erwägen Sie die Verwendung von std::vector und std::istreambuf_iterator für ein effizienteres Lesen von Dateien.

Das obige ist der detaillierte Inhalt vonWie lese ich effizient alle Bytes aus einer Datei in ein Zeichenarray in C?. 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