Como anexar texto a um arquivo em C++

Jinku Hu 12 outubro 2023
  1. Utilize std::ofstream e open() Método para anexar texto a um arquivo
  2. Utilize std::fstream e open() Método para anexar texto a um arquivo
  3. Utilize write() Method With std::fstream and open() to Append Text to a File
Como anexar texto a um arquivo em C++

Este artigo introduz múltiplos métodos C++ para anexar texto a um arquivo.

Utilize std::ofstream e open() Método para anexar texto a um arquivo

A princípio, devemos criar um objeto ofstream e depois chamar sua função de membro de open. Este método toma o nome de um arquivo como um objeto de string para o primeiro argumento. Como segundo argumento, podemos passar o modo aberto especificando valores constantes pré-definidos mostrados na tabela seguinte:

Constante Explicação
std::ios_base::app procurar até o fim do fluxo antes de cada escrita
std::ios_base::binary aberto em modo binário
std::ios_base::in aberto para leitura
std::ios_base::out aberto à escrita
std::ios_base::trunc descartar o conteúdo do fluxo ao abrir
std::ios_base::ate procurar até o fim do fluxo imediatamente após aberto

Observe que a seguinte amostra de código cria um arquivo chamado tmp.txt no diretório de trabalho atual. Você pode passar um caminho completo de um arquivo para criar ou anexar em um local diferente.

#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;
}

Resultado:

Done !

Utilize std::fstream e open() Método para anexar texto a um arquivo

Alternativamente, podemos implementar o exemplo anterior utilizando o fstream que fornece uma opção para abrir um determinado arquivo para leitura e escrita/adaptação. Este método é uma forma universal de manipular fluxos de arquivos. Note que também adicionamos validação se a declaração com a chamada is_open, que verifica se o fluxo está associado com o arquivo especificado.

#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;
}

Utilize write() Method With std::fstream and open() to Append Text to a File

Outro método para resolver este problema é chamar explicitamente a função write do objeto fstream, em vez de utilizar o operador << como fizemos nos exemplos anteriores. Este método deve ser mais rápido para a maioria dos cenários, mas sempre trace um perfil de seu código e compare os tempos se você tiver requisitos rígidos de desempenho.

#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;
}
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

Artigo relacionado - C++ File