Cómo añadir texto a un archivo en C++

Jinku Hu 12 octubre 2023
  1. Usa std::ofstream y open() Método para añadir texto a un archivo
  2. Usa std::fstream y open() Método para añadir texto a un archivo
  3. Use el método write() con std::fstream y open() para añadir texto a un archivo
Cómo añadir texto a un archivo en C++

Este artículo presenta múltiples métodos de C++ para añadir texto a un archivo.

Usa std::ofstream y open() Método para añadir texto a un archivo

Al principio, deberíamos crear un objeto ofstream y luego llamar a su función miembro open. Este método toma un nombre de archivo como objeto string para el primer argumento. Como segundo argumento, podemos pasar el modo abierto especificando los valores constantes predefinidos que se muestran en la siguiente tabla:

Constante Explicación
std::ios_base::app buscar hasta el final de la corriente antes de cada escritura
std::ios_base::binary abierto en modo binario
std::ios_base::in abierto a la lectura
std::ios_base::out abierto a la escritura
std::ios_base::trunc descartar el contenido de la corriente al abrir
std::ios_base::ate buscar hasta el final de la corriente inmediatamente después de abrir

Note que el siguiente ejemplo de código crea un archivo llamado tmp.txt en el directorio de trabajo actual. Puedes pasar una ruta completa de un archivo para crear o añadir en una ubicación 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 !

Usa std::fstream y open() Método para añadir texto a un archivo

Alternativamente, podemos implementar el ejemplo anterior utilizando el fstream que proporciona una opción para abrir un archivo dado para leer y escribir/apagar. Este método es una forma universal de manipular los flujos de archivos. Nótese que también hemos añadido validación si la sentencia con la llamada is_open, que verifica si el flujo está asociado con el archivo 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;
}

Use el método write() con std::fstream y open() para añadir texto a un archivo

Otra versión para resolver este problema es llamar a la función de miembro de write explícitamente desde el objeto fstream en lugar de usar el operador << como hemos hecho en los ejemplos anteriores. Este método debería ser más rápido para la mayoría de los escenarios, pero siempre perfila tu código y compara los tiempos si tienes requisitos de rendimiento estrictos.

#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

Artículo relacionado - C++ File