Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich den gesamten Inhalt einer Datei effizient in eine Zeichenfolge in C einlesen?

Wie kann ich den gesamten Inhalt einer Datei effizient in eine Zeichenfolge in C einlesen?

Patricia Arquette
Patricia ArquetteOriginal
2024-10-27 06:45:29695Durchsuche

How can I efficiently read the entire contents of a file into a string in C  ?

Effizientes Einlesen von Dateiinhalten in einen String in C

In C wird im Gegensatz zu Skriptsprachen wie Perl der gesamte Inhalt einer Datei gelesen in einen String in einem einzigen Vorgang umgewandelt werden kann, ist nicht direkt verfügbar. Es gibt jedoch effiziente Methoden, um diese Funktionalität zu erreichen.

Um Dateiinhalte in einen String einzulesen, können wir die Dateieingabeverarbeitungsfunktionen von C nutzen. Hier ist eine effiziente Lösung:

<code class="cpp">#include <fstream>
#include <string>

int main(int argc, char** argv)
{
  std::ifstream ifs("myfile.txt");
  std::string content( (std::istreambuf_iterator<char>(ifs) ),
                       (std::istreambuf_iterator<char>()    ) );

  return 0;
}</code>

Der Code verwendet einen Eingabedateistream, um den Inhalt der Datei mit dem Namen „myfile.txt“ zu lesen und ihn in einer Zeichenfolgenvariablen mit dem Namen „content“ zu speichern. Der zum Zuweisen des Dateiinhalts zur Zeichenfolge verwendete Ausdruck lautet:

<code class="cpp">std::string content( (std::istreambuf_iterator<char>(ifs) ),
                   (std::istreambuf_iterator<char>()    ) );</code>

Dieser Ausdruck verwendet Iteratoren, um Zeichen für Zeichen aus dem Eingabedateistream zu lesen und die Zeichenfolge zu erstellen. Der erste Iterator wird mit dem Eingabedateistream initialisiert, während der zweite Iterator ein standardmäßig konstruierter „End“-Iterator ist, der das Ende der Datei angibt.

Alternativ können Sie den folgenden Code verwenden, um den Wert von zu überschreiben eine vorhandene String-Variable:

<code class="cpp">std::string content;
content.assign( (std::istreambuf_iterator<char>(ifs) ),
                (std::istreambuf_iterator<char>()    ) );</code>

Dieser Code überschreibt den Wert der vorhandenen String-Variablen „content“ mit dem Inhalt der Datei.

Das obige ist der detaillierte Inhalt vonWie kann ich den gesamten Inhalt einer Datei effizient in eine Zeichenfolge in C einlesen?. 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