Un programa C ++ para usar la clase ifstream debe comenzar de la siguiente manera:
#incluirLa primera línea incluye el encabezado que tiene la definición de la clase ifstream. La segunda línea incluye el encabezado iOSTream que tiene el objeto Cout para imprimir la salida al terminal (consola). La tercera línea es una declaración, y no una directiva. El espacio de nombres estándar es cualquier nombre seguido de "STD :;".
Este artículo explica el uso de la clase Ifstream del encabezado fstream, para manejar la entrada de un archivo en el disco en un programa en ejecución. La entrada es caracteres en secuencia que van a un búfer en la memoria antes de llegar al programa. En otras palabras, este artículo explica cómo leer un archivo de texto, desde el disco, en C++.
Creando un objeto ifstream
Para leer el contenido de un archivo en el disco, un objeto ifstream debe ser instanciado desde la clase Ifstream. Los constructores comúnmente utilizados por los programadores anglosajones (incluidos Europa occidental) son:
Basic_ifstream ();El prefijo, "Basic_" se puede omitir para las tres sintaxis. El uso de la primera sintaxis aquí se ilustrará en la siguiente sección. En la segunda sintaxis, el primer argumento es una cadena literal o una matriz de caracteres que terminan en '\ 0'. Esta cadena es una ruta de directorio y nombre de archivo, e.gramo. "Dir1/txtfile.txt ”, suponiendo que el programa esté en el directorio de inicio/usuario. Para la segunda sintaxis, el primer argumento es el mismo que el primer argumento de la sintaxis anterior, pero es una cadena de la clase de cadena (encabezado). En ambas sintaxis, el segundo argumento debe ser "iOS_Base :: in" donde "en" significa para leer (entrada).
Ilustración
Una declaración de construcción para la segunda sintaxis es la siguiente:
ifstream ifs = ifstream ("Dir1/txtfile.txt ", iOS_Base :: in);El nombre del archivo cuyo contenido debe leerse es: "Txtfile.TXT". Después de esta declaración, el archivo "txtfile.txt "se considera abierto en el programa en ejecución. Cuando se abre un archivo, una secuencia de caracteres consecutivos que representan el archivo está en memoria para el control de búfer.
Un segmento de código de construcción para la tercera sintaxis es:
cadena str = "Dir1/txtfile.TXT";En cualquier situación, IFS es el objeto ifStream del archivo abierto. Con el tipo de cadena, no olvide incluir la clase de cadena (encabezado) en el programa de la siguiente manera:
#incluirAbrir un archivo
Se dice que se abre un archivo cuando una secuencia de caracteres consecutivos del archivo que representa el archivo está en memoria para el control del búfer. La segunda y tercera construcción sintaxis arriba abren el archivo para la lectura, pero la primera sintaxis no. Es decir, la segunda y la tercera sintaxis hacen la instanciación del objeto Ifstream y la apertura del archivo, mientras que la primera sintaxis solo hace instanciación. El objeto IFS se puede instanciar desde la clase ifStream utilizando la primera sintaxis con la declaración:
ifstream ifs;En este caso, se ha creado un objeto de archivo IFS pero el archivo aún no está abierto. Para abrir el archivo para la lectura, se debe usar la función de miembro abierto de la clase ifstream. Los métodos sobrecargados abiertos comúnmente utilizados por los programadores anglosajones (incluidos Europa occidental) son:
Void Open (const char* s, iOS_Base :: OpenMode Mode = iOS_Base :: in);Tenga en cuenta que la declaración de construcción "ifstream ifs"; no menciona ningún archivo en el disco. Y así, los argumentos del primer y segundo de estas funciones miembros abiertas () tienen los mismos significados que los de la segunda y la tercera sintaxis de construcción anteriores respectivamente.
Ilustración
El uso de la primera función de miembro abierto () aquí (en esta sección) se puede ilustrar de la siguiente manera:
ifstream ifs;El uso de la segunda función de miembro abierto () aquí (en esta sección) se puede ilustrar de la siguiente manera:
ifstream ifs;La diferencia en los dos segmentos de código son las formas en que se construyen la cadena para la ruta y el nombre de archivo.
Se abrió el archivo?
Se dice que se abre un archivo, cuando una secuencia de caracteres consecutivos del archivo que representa el archivo está en memoria para el control de búfer. ¿Qué pasaría si la ruta y/o el nombre de archivo estuvieran mal?? ¿Qué pasaría si el archivo no pudiera abrirse porque el disco era malo y sus sectores no podían leerse?? Es aconsejable verificar siempre si el archivo se abrió utilizando la sintaxis:
bool is_open () const;is_open () es una función miembro de la clase ifstream. Devuelve verdadero, si el archivo se abrió con éxito y falso de lo contrario. El siguiente segmento de código ilustra el uso de esta función miembro:
ifstream ifs;La salida debe ser:
Se abre el archivo.Cerrar un archivo
Un archivo debe cerrarse después de que se haya abierto. La acción de cierre detiene el búfer en la memoria, liberando el espacio de memoria para otras actividades. También rompe con gracia la conexión que realizó con el archivo en el disco. ifStream tiene la función miembro cercana () para cerrar un archivo abierto. La sintaxis es:
nulo cerrado ();El siguiente segmento de código ilustra su uso:
ifstream ifs = ifstream ("Dir1/txtfile.txt ", iOS_Base :: in);La salida es:
El archivo abierto ha sido cerrado.El archivo debe usarse cuando el programador esté seguro de que se ha abierto, luego cerrado después de eso.
Leyendo personajes uno por uno
Ifstream tiene una función miembro cuya sintaxis es:
Basic_istreamCuando obtiene el siguiente personaje, lo coloca en la variable C y devuelve el objeto Ifstream heredado de Basic_istream. El puntero interno de Ifstream luego apunta al siguiente personaje para la próxima lectura. Cuando se alcanza el final del archivo, el objeto devuelto se convierte en falso.
El siguiente segmento de código lee todos los caracteres en el archivo uno por uno y envía cada uno al terminal (consola):
char c;C tiene que ser declarado primero. C es el argumento de get (), que es una función miembro del objeto ifstream. La única declaración simple (cout << c;) of the while compound statement sends a copy of the character to the output.
En lugar de enviar los caracteres a la salida, se pueden enviar a un objeto de cadena, formando una cadena larga de la siguiente manera:
char c;En este caso, el encabezado de cadena (biblioteca) debe incluirse en el programa.
El siguiente programa lee todo el contenido de un archivo y lo muestra:
#incluirConclusión
La clase Ifstream del encabezado fstream maneja la entrada de un archivo desde el disco en un programa en ejecución. Para crear un objeto ifstream, use cualquiera de las sintaxis:
Basic_ifstream ();Si se usa la primera sintaxis, entonces el objeto aún debe abrirse, con cualquiera de las siguientes sintaxis de función de miembro:
Void Open (const char* s, iOS_Base :: OpenMode Mode = iOS_Base :: in);Para saber si un archivo se abre correctamente, use la sintaxis de la función miembro:
bool is_open () const;El objeto ifstream debe cerrarse después de su uso.
Para leer los caracteres uno por uno, use en un bucle de tiempo, la sintaxis de la función miembro:
Basic_istream