Trabajo con el sistema de archivos en C++: ejemplos prácticos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción

Trabajar con el sistema de archivos es una de las tareas clave en cualquier programación de aplicaciones. En C++ existen dos enfoques principales: el clásico (usando la biblioteca <fstream>) y el moderno (usando la biblioteca <filesystem>, disponible a partir del estándar C++17). En este artículo, analizaremos con ejemplos prácticos cómo leer y escribir archivos, crear y eliminar directorios, así como verificar la existencia de archivos.

El material será útil tanto para principiantes que recién están aprendiendo C++, como para desarrolladores experimentados que deseen refrescar sus conocimientos sobre las capacidades modernas del lenguaje.



1. Lectura y escritura de archivos de texto con fstream

La biblioteca <fstream> proporciona clases para trabajar con archivos: ifstream (lectura), ofstream (escritura) y fstream (lectura y escritura).



1.1. Escritura de datos en un archivo

Para escribir en un archivo, usamos un objeto ofstream. Si el archivo no existe, se creará. Si existe, el contenido se sobrescribirá (por defecto).

#include <iostream>#include <fstream>#include <string>

int main() { std::ofstream outFile("example.txt"); if (!outFile.is_open()) { std::cerr << "¡Error al abrir el archivo!" << std::endl; return 1; }

outFile << "¡Hola, mundo!" << std::endl; outFile << "Esta es la segunda línea." << std::endl; outFile.close(); std::cout << "Datos escritos." << std::endl; return 0;}

Tenga en cuenta: siempre verificamos si se pudo abrir el archivo y lo cerramos después de usarlo.



1.2. Lectura de datos de un archivo

Para leer, usamos ifstream. La forma más sencilla es leer línea por línea con std::getline.

#include <iostream>#include <fstream>#include <string>

int main() { std::ifstream inFile("example.txt"); if (!inFile.is_open()) { std::cerr << "¡Error al abrir el archivo!" << std::endl; return 1; }

std::string line; while (std::getline(inFile, line)) { std::cout << line << std::endl; } inFile.close(); return 0;}

Este método es conveniente porque maneja automáticamente el final del archivo y no requiere verificaciones adicionales.



1.3. Modos de apertura de archivos

Puede combinar banderas para controlar el modo de apertura. Por ejemplo, para agregar datos al final del archivo (modo append), use la bandera std::ios::app:

std::ofstream outFile("example.txt", std::ios::app);outFile << "Línea adicional." << std::endl;outFile.close();

Otras banderas útiles: std::ios::binary (modo binario), std::ios::trunc (limpiar el archivo al abrirlo).



2. Trabajo moderno con el sistema de archivos (C++17 y filesystem)

La biblioteca <filesystem> simplifica enormemente las manipulaciones con archivos y carpetas. Todas las funciones se encuentran en el espacio de nombres std::filesystem.



2.1. Verificación de existencia de un archivo o directorio

La función exists() devuelve true si el objeto existe:

#include <iostream>#include <filesystem>

namespace fs = std::filesystem;

int main() { std::string path = "example.txt"; if (fs::exists(path)) { std::cout << "El archivo existe." << std::endl; } else { std::cout << "Archivo no encontrado." << std::endl; } return 0;}


2.2. Creación y eliminación de directorios

Para crear una carpeta, use create_directory(). Para eliminar, use remove() o remove_all() (eliminación recursiva).

Blogs

Book Recommendations