In eine Datei schreiben in C++
-
Verwenden von
fstream
und<<
Operator zum Schreiben in eine Datei -
Verwenden Sie
fstream
und die Funktionwrite
, um in eine Datei zu schreiben -
Verwendung von die Funktion
fwrite
zum Schreiben in eine Datei
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!
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