Cómo añadir texto a un archivo en C++
-
Usa
std::ofstream
yopen()
Método para añadir texto a un archivo -
Usa
std::fstream
yopen()
Método para añadir texto a un archivo -
Use el método
write()
constd::fstream
yopen()
para añadir texto a un archivo
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;
}
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