HOWTO · C++
Wie man Text an eine Datei in C++ anhängt
Dieser Artikel erklärt, wie man Text an eine Datei in C++ anhängt
Auf dieser Seite
Die Arbeit mit Dateien ist eine häufige Aufgabe in der Programmierung, und C++ bietet leistungsstarke Werkzeuge für die Dateibearbeitung. Ein häufiger Vorgang ist das Anhängen von Text an eine vorhandene Datei.
Dieser Artikel stellt mehrere Methoden vor, um dies zu erreichen, und bietet Codebeispiele und Erklärungen, die Ihnen helfen, den Vorgang gründlich zu verstehen.
Text an eine Datei in C++ mit ofstream und dem Flag std::ios::app anhängen
In C++ ist die Klasse std::ofstream Teil der Standard Template Library (STL) und wird zum Schreiben in Dateien verwendet. Sie ist eine ausgezeichnete Wahl, wenn Sie Daten in Textdateien erstellen, öffnen, schreiben oder anhängen möchten.
Außerdem ist das Flag std::ios::app ein wichtiger Bestandteil von std::ofstream. Wenn es verwendet wird, weist es den Stream an, die Datei im Anhängemodus zu öffnen, was bedeutet, dass alle Daten, die Sie in den Stream schreiben, an das Ende des vorhandenen Dateiinhalts angefügt werden.
Wenn die Datei nicht existiert, wird sie erstellt.
Um Text mit std::ofstream und dem Flag std::ios::app an eine Datei in C++ anzuhängen, können Sie die folgenden Schritte ausführen:
-
Fügen Sie die erforderlichen Header-Dateien ein:
#include <fstream> #include <iostream> -
Öffnen Sie die Datei mit einem
std::ofstream-Objekt im Anhängemodus (std::ios::app). -
Schreiben Sie den Text, den Sie an die Datei anhängen möchten, mit dem Operator
<<. -
Schließen Sie die Datei, wenn Sie fertig sind.
Hier ist ein Beispiel:
#include <fstream>
#include <iostream>
int main() {
// File path
std::string filePath = "example.txt";
// Open the file in append mode
std::ofstream outputFile(filePath, std::ios::app);
if (!outputFile) {
std::cerr << "Failed to open the file for appending." << std::endl;
return 1;
}
// Text to append to the file
std::string textToAppend = "This is some appended text.";
// Append the text to the file
outputFile << textToAppend << std::endl;
// Close the file
outputFile.close();
std::cout << "Text appended to the file successfully." << std::endl;
return 0;
}
In diesem Beispiel haben wir die Datei example.txt zunächst mit std::ios::app im Anhängemodus geöffnet. Wenn die Datei nicht existiert, wird sie erstellt.
Dann haben wir den angegebenen Text mit dem Operator << an die Datei angehängt und die Datei schließlich geschlossen.
Stellen Sie sicher, dass Sie beim Öffnen der Datei auf Fehler prüfen, wie im Beispiel gezeigt, um Fälle zu behandeln, in denen die Datei nicht geöffnet werden kann.
Text an eine Datei in C++ mit fstream und dem Flag std::ios::app anhängen
Ähnlich wie beim ofstream-Ansatz können Sie std::fstream mit dem Flag std::ios::app verwenden, um eine Datei sowohl zum Lesen als auch zum Anhängen zu öffnen.
In C++ ist die Klasse std::fstream Teil der Standard Template Library (STL) und wird für die Dateiein- und -ausgabe verwendet. Sie ist ebenfalls eine ausgezeichnete Wahl, wenn Sie Daten in Textdateien erstellen, öffnen, schreiben oder anhängen müssen.
Das Flag std::ios::app ist ein wesentlicher Bestandteil von std::fstream. Wenn es angewendet wird, weist es den Stream an, die Datei im Anhängemodus zu öffnen.
In diesem Modus werden alle in den Stream geschriebenen Daten an das Ende des vorhandenen Dateiinhalts angefügt. Wenn die Datei nicht existiert, wird sie erstellt.
Um Text mit std::fstream und dem Flag std::ios::app an eine Datei in C++ anzuhängen, können Sie die folgenden Schritte ausführen:
-
Fügen Sie die erforderlichen Header ein:
#include <fstream> #include <iostream> #include <string> -
Erstellen Sie ein
std::fstream-Objekt und öffnen Sie die Datei im Anhängemodus:std::fstream file("example.txt", std::ios::app); -
Prüfen Sie mit
if (!file.is_open()), ob die Datei erfolgreich geöffnet wurde. -
Hängen Sie Text mit
file << textToAppend << std::endl;an die Datei an und ersetzen SietextToAppenddurch den gewünschten Text. -
Schließen Sie die Datei, wenn Sie fertig sind, mit
file.close();.
Hier ist das vollständige Beispiel:
#include <fstream>
#include <iostream>
#include <string>
int main() {
// Open the file in append mode
std::fstream file("example.txt", std::ios::app);
// Check if the file is opened successfully
if (!file.is_open()) {
std::cerr << "Error opening the file!" << std::endl;
return 1; // Exit with an error code
}
// Text to append
std::string textToAppend = "This is the text to append.";
// Append text to the file
file << textToAppend << std::endl;
// Close the file
file.close();
return 0;
}
Dieser Code öffnet die Datei im Anhängemodus, hängt den angegebenen Text an und schließt die Datei dann.
Wenn die Datei nicht existiert, wird sie erstellt. Wenn sie existiert, wird der neue Inhalt an das Ende der Datei angefügt, ohne den vorhandenen Inhalt zu überschreiben.
Text an eine Datei in C++ mit std::ofstream ohne Flags anhängen
Wenn Sie nun eine neue Datei erstellen oder den vorhandenen Inhalt überschreiben möchten, können Sie std::ofstream ohne Flags verwenden. Wenn die Datei bereits existiert, wird ihr Inhalt dadurch effektiv gelöscht und Sie beginnen mit einem leeren Blatt.
Hier ist ein einfaches Beispiel:
#include <fstream>
#include <iostream>
int main() {
// Creating a new file or overwriting existing content
std::ofstream outputFile("example.txt");
// Checking if the file is successfully opened
if (outputFile.is_open()) {
outputFile << "This will overwrite existing content.\n";
outputFile.close(); // Always close the file when done
} else {
std::cerr << "Unable to open the file.\n";
}
return 0;
}
In diesem Codeausschnitt haben wir zunächst ein std::ofstream-Objekt namens outputFile erstellt und die Datei angegeben, mit der wir arbeiten möchten, in diesem Fall example.txt.
Text an eine Datei in C++ mit std::fstream und der Methode write() anhängen
Eine andere Methode, um dieses Problem zu lösen, ist der explizite Aufruf der write Member-Funktion aus dem fstream-Objekt, anstatt den <<-Operator zu verwenden, wie wir es in den vorherigen Beispielen getan haben. Diese Methode sollte für die meisten Szenarien schneller sein, aber erstellen Sie immer ein Profil Ihres Codes und vergleichen Sie die Zeiten, wenn Sie strenge Leistungsanforderungen haben.
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::fstream;
using std::string;
int main() {
string text("Some huge text to be appended");
string filename("tmp.txt");
fstream file;
file.open(filename, std::ios_base::app);
if (file.is_open()) file.write(text.data(), text.size());
cout << "Done!" << endl;
return EXIT_SUCCESS;
}
Im obigen Code haben wir die Datei mit der Methode open() des fstream-Objekts im Anhängemodus (std::ios_base::app) geöffnet. Wir haben auch mit file.is_open() geprüft, ob die Datei erfolgreich geöffnet wurde.
Dann haben wir die Methode write() verwendet, um den Text als Binärdaten in die Datei zu schreiben. Wie wir sehen können, nimmt diese Methode zwei Argumente entgegen: einen Zeiger auf die Daten und die Anzahl der zu schreibenden Bytes.
Schließlich haben wir Done! ausgegeben, um anzuzeigen, dass der Vorgang abgeschlossen war.
Fazit
Jede in diesem Artikel vorgestellte Methode bietet einen einzigartigen Ansatz, um Text an eine Datei anzuhängen. Die Wahl der Methode hängt von Ihren spezifischen Anforderungen und Ihrem Programmierstil ab.