Manejo de archivos en C++: Dominando apertura, lectura, escritura y cierre
¿Qué es el manejo de archivos en C++?
El manejo de archivos permite persistir datos del programa en dispositivos de almacenamiento. Al dirigir la salida del programa a un archivo, puede realizar manipulación, análisis o archivado posterior de esos datos.
Un flujo (stream) es una abstracción que representa una fuente o destino continuo de caracteres. C++ proporciona una robusta biblioteca fstream que ofrece clases y funciones para trabajar fluidamente con archivos.
En este tutorial aprenderá:
- Definición de manejo de archivos en C++
- La biblioteca
fstreamy sus clases - Apertura de archivos en varios modos
- Cierre seguro de archivos
- Escritura de datos en archivos
- Lectura de datos desde archivos
La biblioteca fstream
La biblioteca fstream proporciona tres clases principales:
- ofstream – flujo de salida para crear y escribir archivos.
- ifstream – flujo de entrada para leer archivos existentes.
- fstream – flujo combinado que soporta tanto entrada como salida.
Referencia visual rápida:
Para usar estas clases, incluya la cabecera fstream y, si desea salida a consola, iostream también.
Cómo abrir archivos
Antes de cualquier operación con archivos, este debe abrirse. Use ofstream para acceso solo escritura, ifstream para solo lectura, y fstream para ambos. Cada clase proporciona un miembro open():
open(nombre_archivo, modo);
- nombre_archivo – la ruta o nombre del archivo objetivo.
- modo – opcional; especifica el tipo de acceso. Banderas comunes incluyen:
| Valor | Descripción |
|---|---|
| ios::app | Modo añadir – las escrituras se agregan al final del archivo. |
| ios::ate | Abrir y posicionar inmediatamente al final. |
| ios::in | Abrir para lectura. |
| ios::out | Abrir para escritura. |
| ios::trunc | Truncar archivo existente a longitud cero. |
Múltiples banderas pueden combinarse con el operador OR bit a bit (|).
Ejemplo 1: Crear un archivo
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream mi_archivo;
mi_archivo.open("mi_archivo", ios::out);
if (!mi_archivo) {
cout << "¡Archivo no creado!";
} else {
cout << "¡Archivo creado exitosamente!";
mi_archivo.close();
}
return 0;
}
Salida:

Captura del programa en ejecución:

Recorrido del código:
- Incluya
iostreampara E/S de consola. - Incluya
fstreampara flujos de archivo. - Use el espacio de nombres
stdpor brevedad. - Instancie un objeto
fstreamllamadomi_archivo. - Abra el archivo en modo escritura (
ios::out). - Verifique apertura exitosa; si no, reporte fallo.
- En caso de éxito, imprima confirmación y cierre el archivo.
- Retorne
0para indicar terminación normal.
Cómo cerrar archivos
Aunque C++ vacía y cierra flujos automáticamente al salir del programa, cerrar explícitamente un archivo tras su última operación se considera buena práctica.
El miembro close() está disponible en fstream, ofstream e ifstream:
void close();
Cómo escribir en archivos
Las operaciones de escritura usan el operador de inserción de flujo (<<). El texto a almacenar debe ir entre comillas o transmitirse directamente.
Ejemplo 2: Escribir texto
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream mi_archivo;
mi_archivo.open("mi_archivo.txt", ios::out);
if (!mi_archivo) {
cout << "¡Archivo no creado!";
} else {
cout << "¡Archivo creado exitosamente!";
mi_archivo << "Guru99";
mi_archivo.close();
}
return 0;
}
Salida:

Captura del código:

Recorrido del código:
- Incluya cabeceras necesarias.
- Cree un objeto
fstream. - Abra el archivo objetivo en modo escritura.
- Valide el flujo de archivo.
- Inserte la cadena "Guru99" en el archivo.
- Cierre el flujo.
- Retorne
0.
Cómo leer desde archivos
La lectura usa el operador de extracción de flujo (>>) igual que cin. Los datos se transmiten a variables de tipos apropiados.
Ejemplo 3: Lectura de caracteres
#include <iostream>
#include <fstream>
using namespace std;
int main() {
fstream mi_archivo;
mi_archivo.open("mi_archivo.txt", ios::in);
if (!mi_archivo) {
cout << "No existe el archivo";
} else {
char ch;
while (1) {
mi_archivo >> ch;
if (mi_archivo.eof()) break;
cout << ch;
}
}
mi_archivo.close();
return 0;
}
Salida:

Captura del código en ejecución:

Recorrido del código:
- Incluya
iostreamyfstream. - Abra el archivo para lectura (
ios::in). - Verifique existencia; si falta, notifique al usuario.
- Lea caracteres uno a uno hasta alcanzar EOF.
- Imprima cada carácter en consola.
- Cierre el flujo.
- Retorne
0.
Resumen
- El manejo de archivos persiste la salida del programa en almacenamiento duradero.
- Los flujos abstraen dispositivos de entrada y salida.
- La biblioteca
fstreamproporciona clases para todas las operaciones comunes de archivos. - Siempre incluya
<fstream>(y<iostream>si es necesario) al inicio de su fuente. - Abra archivos con modos apropiados, realice acciones deseadas y luego cierre los flujos.
Lenguaje C
- Micrómetro Explicado: Cómo Leer y Usar Esta Herramienta de Medición de Precisión
- ¿Qué es una Lima de Banco? Guía Completa de la Herramienta Esencial para Madera y Metal
- Manejo de archivos en C: Dominando E/S con fopen, fprintf, fread y fseek
- Manejo de excepciones en C++: Guía práctica con try, catch, throw
- Dominando los comentarios en C: Escribir notas claras y efectivas
- Entendiendo los Archivos de Cabecera en C: Tipos, Uso y Buenas Prácticas
- Dominando Entrada/Salida de Archivos en C++: Lectura y Escritura con fstream
- Dominar el manejo de señales en C++: Gestión segura de interrupciones y terminación limpia del programa
- Inicialización de RAM de bloques FPGA desde archivos de texto usando la biblioteca TEXTIO de VHDL
- Entrada/Salida de Archivos en Python: Domina las Operaciones I/O
- Lectura de archivos en Java con BufferedReader – Guía práctica con ejemplos