0Pricing
C++ Academy · Lección

Lectura de archivos con ifstream

Lea texto y datos

Lectura de archivos con ifstream es una lección gratuita de C++ Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de C++ Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de C++ Academy incluye 4 lecciones en total.

¿Qué es ifstream?

std::ifstream (flujo de entrada de archivo) lee datos de archivos. Se comporta como std::cin, pero su fuente es un archivo almacenado en el disco.

  • Se define en <fstream>.
  • Abre un archivo por su nombre en su constructor.
#include <iostream>
#include <fstream>

int main() {
    std::ofstream("demo.txt") << "hello\n";
    std::ifstream in("demo.txt");
    std::string word;
    in >> word;
    std::cout << word << '\n';
    return 0;
}

Abrir un archivo

Construya un ifstream con un nombre de archivo y, a continuación, compruebe con is_open() si se encontró el archivo.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("data.txt") << "42\n";
    std::ifstream in("data.txt");
    std::cout << (in.is_open() ? "opened" : "failed") << '\n';
    return 0;
}

Leer palabras

El operador >> lee tokens separados por espacios en blanco, igual que con cin.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("words.txt") << "alpha beta gamma\n";
    std::ifstream in("words.txt");
    std::string w;
    while (in >> w) std::cout << w << '\n';
    return 0;
}

Leer números

Puede extraer directamente tipos numéricos. La extracción del flujo analiza el texto y lo convierte al tipo adecuado.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("nums.txt") << "10 20 30\n";
    std::ifstream in("nums.txt");
    int sum = 0, x;
    while (in >> x) sum += x;
    std::cout << "sum = " << sum << '\n';
    return 0;
}

Leer líneas con getline

Use std::getline() para leer una línea completa, incluidos los espacios, hasta el salto de línea.

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

int main() {
    std::ofstream("lines.txt") << "first line\nsecond line\n";
    std::ifstream in("lines.txt");
    std::string line;
    while (std::getline(in, line)) std::cout << "[" << line << "]\n";
    return 0;
}

Leer el archivo completo

Para leer un archivo completo de una sola vez, léalo en un string mediante iteradores del búfer del flujo.

#include <iostream>
#include <fstream>
#include <sstream>

int main() {
    std::ofstream("all.txt") << "line1\nline2\n";
    std::ifstream in("all.txt");
    std::stringstream ss;
    ss << in.rdbuf();
    std::cout << ss.str();
    return 0;
}

Detectar el final del archivo

Un bucle de lectura termina cuando falla la extracción, normalmente al llegar al final del archivo. Probar el flujo en una condición permite comprobarlo.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("eof.txt") << "1 2 3\n";
    std::ifstream in("eof.txt");
    int x, count = 0;
    while (in >> x) ++count;
    std::cout << "read " << count << " numbers\n";
    std::cout << "eof: " << std::boolalpha << in.eof() << '\n';
    return 0;
}

Gestionar un archivo inexistente

Si el archivo no existe, el flujo se encuentra en un estado de error y is_open() es false. Compruébelo siempre antes de leer.

#include <iostream>
#include <fstream>

int main() {
    std::ifstream in("does_not_exist_12345.txt");
    if (!in) {
        std::cout << "could not open file\n";
    }
    return 0;
}

Analizar líneas estructuradas

Combine getline con istringstream para extraer campos de cada línea.

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

int main() {
    std::ofstream("people.txt") << "Alice 30\nBob 25\n";
    std::ifstream in("people.txt");
    std::string line;
    while (std::getline(in, line)) {
        std::istringstream ss(line);
        std::string name; int age;
        ss >> name >> age;
        std::cout << name << " is " << age << '\n';
    }
    return 0;
}

Abrir y cerrar explícitamente

Puede abrir más tarde un flujo construido por defecto con open() y liberarlo con close().

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("oc.txt") << "data\n";
    std::ifstream in;
    in.open("oc.txt");
    std::string s; in >> s;
    in.close();
    std::cout << s << '\n';
    return 0;
}

RAII cierra el archivo automáticamente

Cuando un ifstream sale de ámbito, su destructor cierra el archivo automáticamente. El close() manual rara vez es necesario.

#include <iostream>
#include <fstream>

int main() {
    std::ofstream("raii.txt") << "x\n";
    {
        std::ifstream in("raii.txt");
        std::string s; in >> s;
        std::cout << s << '\n';
    } // file closed here automatically
    std::cout << "closed\n";
    return 0;
}

Comprobación rápida

Compruebe su comprensión de la lectura de líneas.

Resumen

Ha aprendido que std::ifstream:

  • lee de archivos mediante >> y std::getline
  • debe comprobarse con is_open() o probando el flujo
  • se cierra automáticamente mediante RAII al salir de ámbito

A continuación, escribirá archivos con ofstream.

Preguntas frecuentes

¿La lección «Lectura de archivos con ifstream» es gratis?

Sí — el texto completo de «Lectura de archivos con ifstream» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de C++ Academy, actualiza a CoddyKit PRO. El curso de C++ Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Lectura de archivos con ifstream»?

Lea texto y datos Practicas C++ Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar C++ Academy?

No se requiere experiencia previa. C++ Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Lectura de archivos con ifstream»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de C++ Academy?

Sí. Cada lección de C++ Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Lectura de archivos con ifstream
  2. Escritura de archivos con ofstream
  3. E/S de archivos binarios
  4. Gestión de errores y estado
← Volver a C++ Academy