Aggiungi testo a un file in C++

Jinku Hu 12 ottobre 2023
  1. Usa il metodo std::ofstream e open() per aggiungere testo a un file
  2. Usa il metodo std::fstream e open() per aggiungere testo a un file
  3. Usa il metodo write() con std::fstream e open() per aggiungere testo a un file
Aggiungi testo a un file in C++

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;
}
Autore: 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

Articolo correlato - C++ File