Archivos en C++: de principiante a profesional en 20 minutos

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

Archivos en C++: de principiante a profesional en 20 minutos

\n\n

Imagina que tu programa es un excelente chef. Sabe cocinar, pero todos los ingredientes deben traerse a mano, y las recetas desaparecen después de cada uso. No suena muy bien, ¿verdad? Por eso, cualquier desarrollador que se precie debe saber trabajar con archivos y el sistema de archivos. En C++ esto no es solo "posible", es la base, sin la cual te sentirás inseguro como programador.

\n\n

Hoy analizaremos el trabajo con archivos en C++ para que no solo copies el código, sino que realmente entiendas lo que sucede bajo el capó. Sin conferencias aburridas, con ejemplos vivos y consejos prácticos. ¡Vamos allá!

\n\n

Flujos: la base del trabajo con archivos en C++

\n\n

En C++, el trabajo con archivos se basa en flujos. Si ya conoces cout y cin, considera que ya tienes medio camino recorrido. Los flujos de archivos funcionan con el mismo principio, solo que en lugar de la pantalla o el teclado, los datos se envían a un archivo o se cargan desde él.

\n\n

Los principales actores en el campo son:

\n\n
    \n
  • ifstream — para leer desde un archivo (input file stream).
  • \n
  • ofstream — para escribir en un archivo (output file stream).
  • \n
  • fstream — flujo universal para lectura y escritura.
  • \n
\n\n

Todas estas clases viven en el archivo de cabecera <fstream>. No olvides incluirlo, o el compilador se enfadará contigo.

\n\n

Cómo abrir un archivo y no volverse loco

\n\n

Abrir un archivo en C++ es como abrir una puerta: necesitas saber a dónde ir y para qué. Veamos un ejemplo simple de apertura de un archivo para escritura:

\n\n
#include <iostream>\n#include <fstream>\n#include <string>\n\nint main() {\n    std::ofstream outFile("example.txt"); // Abrimos el archivo para escritura\n    \n    if (outFile.is_open()) {\n        outFile << "¡Hola, archivo!" << std::endl;\n        outFile << "Esta es la segunda línea." << std::endl;\n        outFile.close(); // Cerramos el archivo\n        std::cout << "¡Escritura realizada con éxito!" << std::endl;\n    } else {\n        std::cerr << "¡No se pudo abrir el archivo!" << std::endl;\n    }\n    \n    return 0;\n}\n
\n\n

Observa: siempre verificamos si el archivo se abrió con is_open(). Si el archivo no existe, ofstream lo creará automáticamente. Y si no se puede (por ejemplo, no hay permisos de escritura), el programa no fallará, sino que informará del error.

\n\n

Modos de apertura: cuando uno solo no es suficiente

\n\n

Por defecto, ofstream sobrescribe el archivo, y ifstream solo lee. Pero, ¿qué pasa si quieres añadir datos al final del archivo? ¿O abrir un archivo para lectura y escritura simultáneamente? Aquí es donde entran en juego las banderas de modo:

\n\n
    \n
  • std::ios::in — abrir para lectura.
  • \n
  • std::ios::out — abrir para escritura (por defecto para ofstream).
  • \n
  • std::ios::app — añadir al final del archivo (append).
  • \n
  • std::ios::ate — mover el cursor al final al abrir.
  • \n
  • std::ios::binary — abrir en modo binario.
  • \n
\n\n

Ejemplo de uso de modos:

\n\n
std::ofstream logFile("log.txt", std::ios::app); // Añadimos al final\nif (logFile.is_open()) {\n    logFile << "Nueva entrada en el registro" << std::endl;\n    logFile.close();\n}\n
\n\n

Y si necesitas leer y escribir, usa fstream con banderas combinadas:

\n\n
std::fstream file("data.txt", std::ios::in | std::ios::out);\n
\n\n

Lectura de archivos: por palabras y por líneas

\n\n

Leer de un archivo en C++ es todo un arte. Se puede leer por palabras, por líneas, por caracteres. La elección depende de la tarea.

\n\n

Lectura por líneas (la forma más popular)

\n\n
#include <fstream>\n#include <iostream>\n#include <string>\n\nint main() {\n    std::                

Blogs

Book Recommendations