Aggiungi testo a un file in C++
-
Usa il metodo
std::ofstream
eopen()
per aggiungere testo a un file -
Usa il metodo
std::fstream
eopen()
per aggiungere testo a un file -
Usa il metodo
write()
constd::fstream
eopen()
per aggiungere testo a un file
Questo articolo introduce diversi metodi C++ per aggiungere testo a un file.
Usa il metodo std::ofstream
e open()
per aggiungere testo a un file
All’inizio, dovremmo creare un oggetto ofstream
e quindi chiamare la sua funzione membro open
. Questo metodo accetta un nome di file come oggetto string
per il primo argomento. Come secondo argomento, possiamo passare la modalità open specificando i valori costanti predefiniti mostrati nella tabella seguente:
Costante | Spiegazione |
---|---|
std::ios_base::app |
cerca fino alla fine del flusso prima di ogni scrittura |
std::ios_base::binary |
aperto in modalità binaria |
std::ios_base::in |
aperto per la lettura |
std::ios_base::out |
aperto per la scrittura |
std::ios_base::trunc |
scartare il contenuto dello stream all’apertura |
std::ios_base::ate |
cerca alla fine del flusso subito dopo l’apertura |
Si noti che il seguente codice di esempio crea un file denominato tmp.txt
nella directory di lavoro corrente. È possibile passare un percorso completo di un file da creare o accodare in una posizione diversa.
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::ofstream;
using std::string;
int main() {
string filename("tmp.txt");
ofstream file_out;
file_out.open(filename, std::ios_base::app);
file_out << "Some random text to append." << endl;
cout << "Done !" << endl;
return EXIT_SUCCESS;
}
Produzione:
Done !
Usa il metodo std::fstream
e open()
per aggiungere testo a un file
In alternativa, possiamo implementare l’esempio precedente usando fstream
che fornisce un’opzione per aprire un dato file per la lettura e la scrittura / aggiunta. Questo metodo è un modo universale per manipolare i flussi di file. Si noti che abbiamo anche aggiunto la convalida se l’istruzione con is_open
chiama, che verifica se il flusso è associato al file specificato.
#include <fstream>
#include <iostream>
using std::cout;
using std::endl;
using std::fstream;
using std::string;
int main() {
string filename("tmp.txt");
fstream file;
file.open(filename, std::ios_base::app | std::ios_base::in);
if (file.is_open()) file << "Some random text to append." << endl;
cout << "Done !" << endl;
return EXIT_SUCCESS;
}
Usa il metodo write()
con std::fstream
e open()
per aggiungere testo a un file
Un altro metodo per risolvere questo problema è chiamare la funzione membro write
esplicitamente dall’oggetto fstream
piuttosto che usare l’operatore <<
come abbiamo fatto negli esempi precedenti. Questo metodo dovrebbe essere più veloce per la maggior parte degli scenari, ma profila sempre il tuo codice e confronta i tempi se hai requisiti di prestazioni rigorosi.
#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;
}
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