Tecnología

Inicio

Cómo mover un puntero a un archivo en C ++

Cómo mover un puntero a un archivo en C ++


Los desarrolladores utilizan C y C ++ como lenguajes de bajo nivel. A diferencia de otros idiomas, como Python o Perl, C ++ ofertas más estrechos con la arquitectura subyacente de un ordenador. En esencia, esto significa que las tareas que están más ocultos en otros idiomas están presentes en C ++. Una de estas tareas resulta ser la manipulación de ficheros. C ++ tiene alguna funcionalidad incorporada para atravesar un archivo mediante apuntadores de archivo, sino que requiere un cierto conocimiento de los punteros y cómo funcionan.

Instrucciones

1 Abrir un archivo en el código C ++. Ver el código esqueleto como un ejemplo:

incluir <iostream> incluir <fstream>

using namespace std;

int main () {

ifstream archivo;

file.open ( "archivo.txt");

if (! file.is_open ()) {

cout << "Archivo no abierto" << endl;

return 0;

}

}

Este código básico crea un "archivo" "ifstream" objeto que sirve como un flujo de entrada para el archivo. Entonces, el "si" comprobaciones de los estados si el archivo abierto con éxito. Si no es así, cualquier operación en el objeto ifstream generará un error.

2 Navegar por el archivo utilizando los punteros de archivos internos. Los programadores mueve estos punteros a través de la "tellg ()" y "seekg) (" funciones. La función tellg () devuelve la posición del puntero en el archivo como un entero:

int ubicación file.tellg = ();

La función seekg () en realidad se mueve el puntero, ya sea basado en una ubicación absoluta, o basado en otro lugar, incluyendo un desplazamiento:

file.seekg (5); // Mueve el puntero a la ubicación absoluta

file.seekg (4, ios :: beg); // mueve puntero cuatro lugares desde el principio del archivo

3 Leer el tamaño del archivo usando los punteros de archivo. Poner todos los ejemplos en conjunto, las funciones del archivo en el objeto ifstream obtendrán la posición de partida, a continuación, mueva el puntero hasta el final y recuperar la posición final. La diferencia de estas posiciones es el tamaño del archivo en bytes.

int start = file.tellg ();

file.seekg (0, ios :: end);

int final = file.tellg ();

int size = (final - inicial);