Trabajar con archivos en C++ es esencial para almacenar y recuperar datos de manera persistente. Vamos a explorar cómo leer y escribir archivos en C++.
Escritura en un Archivo
Para escribir en un archivo, utilizamos la clase `std::ofstream` (ofstream significa "output file stream"). Aquí está el proceso básico para escribir en un archivo:
1. Incluye la biblioteca necesaria.
#include <iostream>
#include <fstream>
2. Abre el archivo para escritura.
std::ofstream archivo("mi_archivo.txt");
3. Escribe en el archivo.
archivo << "Hola, Mundo!" << std::endl;
4. Cierra el archivo.
archivo.close();
Lectura desde un Archivo
Para leer desde un archivo, utilizamos la clase `std::ifstream` (ifstream significa "input file stream"). Aquí está el proceso básico para leer desde un archivo:
1. Incluye la biblioteca necesaria.
#include <iostream>
#include <fstream>
2. Abre el archivo para lectura.
std::ifstream archivo("mi_archivo.txt");
3. Lee desde el archivo.
std::string linea;
while (std::getline(archivo, linea)) {
std::cout << linea << std::endl;
}
4. Cierra el archivo.
archivo.close();
Modo de Apertura de Archivo
Al abrir un archivo, puedes especificar el modo de apertura. Algunos modos comunes son:
`std::ios::in`: Modo de lectura.
`std::ios::out`: Modo de escritura.
`std::ios::app`: Modo de escritura al final del archivo (append).
`std::ios::binary`: Modo binario para archivos no de texto.
Verificación de la Apertura del Archivo
Es importante verificar si el archivo se ha abierto correctamente.
std::ifstream archivo("mi_archivo.txt");
if (archivo.is_open()) {
// Realiza operaciones de lectura
} else {
std::cerr << "No se pudo abrir el archivo." << std::endl;
}
Escritura y Lectura Binaria
Para escribir y leer en modo binario, se usa `std::ios::binary` en el modo de apertura.
std::ofstream archivo("datos.bin", std::ios::out | std::ios::binary);
archivo.write(reinterpret_cast<char*>(&mi_objeto), sizeof(mi_objeto)); // Escribir en binario
std::ifstream archivo_lectura("datos.bin", std::ios::in | std::ios::binary);
archivo_lectura.read(reinterpret_cast<char*>(&mi_objeto), sizeof(mi_objeto)); // Leer en binario
Recuerda siempre verificar que el archivo se haya abierto correctamente y cerrarlo después de usarlo.