Lea un archivo en una matriz en C ++

Lea un archivo en una matriz en C ++
Leer todo el archivo en una matriz no es tan difícil como puede parecer. Un archivo, ya sea texto o no, consiste en bytes de principio a fin. Los bytes se pueden leer como personajes. Los personajes se pueden leer uno por uno en la matriz.

Este artículo explica cómo leer un archivo completo en una matriz. El encabezado C ++ (biblioteca) fstream, tiene la clase si. La clase Ifstream tiene () funciones de miembro sobrecargado. Se pueden usar dos de estas funciones de miembros sobrecargados para leer todo el archivo en una matriz. Un programa para tal lectura debe comenzar con:

#incluir
#incluir
usando el espacio de nombres STD;

Las dos primeras líneas son directivas, no declaraciones. El primero incluye la biblioteca fstream para las funciones get (). El segundo incluye la biblioteca IOSTream para imprimir en la terminal (consola) y para recibir caracteres del teclado. La tercera línea es una declaración. Insiste en que cualquier nombre no precedido por "std ::" es del espacio de nombres estándar.

Hay un pequeño problema con las funciones get (), la longitud de la matriz debe estimarse, para ser al menos un personaje más que el número de caracteres en el archivo. La idea es tener '\ 0' incluido justo después de que el último personaje de lectura en la matriz formaría una cadena larga.

Si la longitud de la matriz no se puede estimar como tal, entonces todo el archivo debe leerse en algún otro objeto, como un objeto de cadena (de la clase de cadena). Dado que el objetivo de este artículo es explicar cómo leer en una matriz, entonces el tamaño de la matriz debe estimarse.

Para el resto de este artículo, se supone que el nombre del archivo, cuyo contenido se lee, es txtfile.txt, en el directorio, dir1, en el directorio de inicio/usuario.

Contenido del artículo

- Leer un archivo completo personaje por personaje

- Leer un archivo completo con una función de miembro

- Conclusión

Leer un archivo completo personaje por personaje

La sintaxis de la función ifstream sobrecargado get (), para esto, es:

Basic_istream& get (char_type & c);

Un segmento de código de programa para leer el siguiente carácter en el archivo es:

char c;
char arr [100];
int i = 0;
mientras (ifs.Get (c))
arr [i] = c;
i ++;

La primera declaración declara la variable, C recibirá cada uno de los caracteres. La segunda declaración declara la matriz que recibirá todos los personajes, uno por uno. La tercera línea declara un índice para la matriz que comienza desde cero para abordar todos los elementos de la matriz, que recibirá un personaje. Con este enfoque, '\ 0' se puede agregar después de que el último carácter del archivo se haya incluido en la matriz.

Las paréntesis del bucle mientras,

IFS.Obtener (c)

donde ifs es el nombre del objeto ifstream. El siguiente carácter del archivo es obtenido por la función get miembro y asignado a c. Después de esto, el puntero interno del objeto ifstream apuntaría al personaje después de uno que lee. Cuando se alcanza el final del archivo, la expresión, "ifs.Get (c) ”se vuelve falso en lugar de verdadero, por lo que termina el bucle mientras termina.

El siguiente programa leerá todos los caracteres de un archivo e imprimirá todo el contenido al terminal:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

ifstream ifs = ifstream ("Dir1/txtfile.txt ", iOS_Base :: in);
if (ifs.is_open () == true)
char c; int i = 0; char arr [100];
mientras (ifs.Get (c))
arr [i] = c;
i ++;

IFS.cerca(); arr [i] = '\ 0'; cout<
demás
cout<< "File could not be open!" <regresar 0;

ifstream como codificado, abre el archivo para leer.

Leer un archivo completo con una función de miembro

La función de miembro ifstream sobrecargado get () para leer el archivo completo, sin el bucle while, es:

Basic_istream& get (char_type* s, streamsize n, char_type delim);

Todavía lee todo el archivo carácter por personaje, pero ese ya no es el negocio del programador C ++. Además, esta función agrega el carácter nulo, '\ 0' en nombre del programador, suponiendo que n es al menos un carácter más largo que el contenido del archivo.

El primer argumento de esta función get () sobrecargado es la matriz con las mismas restricciones (incluida la estimación) que la matriz anterior para recibir todos los caracteres del archivo. El segundo argumento, n, del tipo de flujo de transmisión es una estimación del número de caracteres en el archivo. Es aconsejable hacer el tamaño de la matriz y n, lo mismo. No hay necesidad de un bucle con esta función miembro.

Ahora, una línea en un archivo de texto termina con la secuencia de escape, '\ n'. Si el tercer argumento es '\ n', solo se lee la primera línea del archivo. Por lo tanto, la función debe ser engañada con cualquier carácter que no sea probable que se encuentre en el contenido del archivo. Un buen candidato para el tercer argumento es '\ 0'. Con esta función de miembro sobrecargado, el programador debe tener algún conocimiento de los posibles caracteres en el archivo para no usar un personaje que forme parte del contenido del archivo.

El siguiente programa leerá todos los caracteres de un archivo con una declaración e imprimirá todo el contenido al terminal:

#incluir
#incluir
usando el espacio de nombres STD;
int main ()

ifstream ifs = ifstream ("Dir1/txtfile.txt ", iOS_Base :: in);
if (ifs.is_open () == true)
char arr [100];
IFS.Get (arr, 100, '\ 0');
IFS.cerca(); cout<
demás
cout<< "File could not be open!" <regresar 0;

Conclusión

Se puede leer un archivo completo en una matriz. Esta primera de todo necesita la clase C ++ Ifstream de la biblioteca fstream. El archivo debe abrirse para leer. Para leer todos los caracteres (bytes) de un archivo (uno por uno) en la matriz, use la función ifstream member,

Basic_istream& Get (char_type & c)

como la condición en un bandeo. Para leer todos los caracteres (bytes) de un archivo, en la matriz con una función miembro ifStream sin el bucle while-loop, la función ifstream member debería ser:

Basic_istream& get (char_type* s, streamsize n, char_type delim);

No olvide engañar a la función en el tercer argumento. Con esta función, el programador debe tener algún conocimiento de los posibles caracteres en el archivo.