In eine Datei schreiben in C++

Jinku Hu 12 Oktober 2023
  1. Verwenden von fstream und << Operator zum Schreiben in eine Datei
  2. Verwenden Sie fstream und die Funktion write, um in eine Datei zu schreiben
  3. Verwendung von die Funktion fwrite zum Schreiben in eine Datei
In eine Datei schreiben in C++

Dieser Artikel erklärt verschiedene Methoden, wie man in C++ in eine Datei schreiben kann.

Verwenden von fstream und << Operator zum Schreiben in eine Datei

Datei I/O in C++ wird mit der Klasse fstream gehandhabt, die mehrere eingebaute Methoden zur Stream-Manipulation und Positionierung bereitstellt. Sobald das fstream-Objekt deklariert ist, können wir die Funktion open aufrufen, wobei wir den Namen der Datei und den Modus, in dem die Datei geöffnet werden soll, als Argumente übergeben.

Wenn wir in eine Datei schreiben, geben wir den Modus std::ios_base::out an, der dem Zustand open for writing entspricht. Als nächstes prüfen wir, ob die Datei erfolgreich mit dem Stream-Objekt verknüpft wurde, d. h. der Aufruf der Methode is_open in der if-Bedingung. An diesem Punkt ist die Datei bereit, Eingaben mit dem <<-Operator entgegenzunehmen und die Ausgaben wie gewünscht zu verarbeiten.

Beachten Sie, dass der else-Block für die Fehlerprotokollierung verwendet werden kann, oder wir können Fehlerbehandlungsroutinen für eine bessere fehlertolerante Programmausführung implementieren.

#include <fstream>
#include <iostream>

using std::cout;
using std::endl;
using std::fstream;
using std::ofstream;
using std::string;

int main() {
  string filename("tmp.txt");
  fstream file_out;

  file_out.open(filename, std::ios_base::out);
  if (!file_out.is_open()) {
    cout << "failed to open " << filename << '\n';
  } else {
    file_out << "Some random text to write." << endl;
    cout << "Done Writing!" << endl;
  }

  return EXIT_SUCCESS;
}

Ausgabe:

Done Writing!

Verwenden Sie fstream und die Funktion write, um in eine Datei zu schreiben

Eine weitere Methode, um in eine Datei zu schreiben, ist die eingebaute Funktion write, die vom Objekt fstream aufgerufen werden kann. Die Funktion write nimmt einen Zeiger auf eine Zeichenkette und die Größe der Daten, die an dieser Adresse gespeichert sind. Als Ergebnis werden die gegebenen Daten in die Datei eingefügt, die mit dem aufrufenden Stream-Objekt verbunden ist.

Im folgenden Code-Beispiel demonstrieren wir die minimale Fehlerberichterstattung, indem wir den Status des Funktionsaufrufs open ausgeben, aber in realen Anwendungen wäre eine robustere Ausnahmebehandlung erforderlich, die in der Handbuchseite dokumentiert ist.

#include <fstream>
#include <iostream>

using std::cout;
using std::endl;
using std::fstream;
using std::ofstream;
using std::string;

int main() {
  string text("Some huge text to write to\n");
  string filename2("tmp2.txt");
  fstream outfile;

  outfile.open(filename2, std::ios_base::out);
  if (!outfile.is_open()) {
    cout << "failed to open " << filename2 << '\n';
  } else {
    outfile.write(text.data(), text.size());
    cout << "Done Writing!" << endl;
  }

  return EXIT_SUCCESS;
}

Ausgabe:

Done Writing!

Verwendung von die Funktion fwrite zum Schreiben in eine Datei

Alternativ können wir die Funktion fwrite aus der C-ähnlichen Datei I/O verwenden, um in die Datei zu schreiben. fwrite bezieht die Daten aus dem void-Zeiger und der Programmierer ist dafür verantwortlich, die Anzahl der an dieser Adresse gespeicherten Elemente sowie die Größe jedes Elements zu übergeben. Die Funktion benötigt einen Dateistrom vom Typ FILE*, der durch den Aufruf der Funktion fopen erhalten werden kann.

Beachten Sie, dass fwrite die Anzahl der in eine Datei geschriebenen Elemente zurückgibt, wenn die Operation erfolgreich war.

#include <fstream>
#include <iostream>

using std::cout;
using std::endl;
using std::ofstream;
using std::string;

int main() {
  string text("Some huge text to write to\n");
  string filename3("tmp3.txt");

  FILE *o_file = fopen(filename3.c_str(), "w+");
  if (o_file) {
    fwrite(text.c_str(), 1, text.size(), o_file);
    cout << "Done Writing!" << endl;
  }

  return EXIT_SUCCESS;
}

Ausgabe:

Done Writing!
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Verwandter Artikel - C++ File