Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis...

41
C++ Ficheros Ficheros en C++ Prof. Dr. Nicol´ as Luis Fern´ andez Garc´ ıa Departamento de Inform´ atica y An´ alisis Num´ erico Escuela Polit´ ecnica Superior Universidad de C´ordoba Universidad de C´ordoba: Escuela Polit´ ecnica Superior Grado de Ingenier´ ıa Inform´ atica 1/ 41

Transcript of Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis...

Page 1: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Ficheros en C++

Prof. Dr. Nicolas Luis Fernandez Garcıa

Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior

Universidad de Cordoba

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 1 / 41

Page 2: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Contenido del tema

1 Ficheros

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 2 / 41

Page 3: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Contenido de la seccion

1 FicherosFicheros de cabeceraDeclaracion de flujosApertura de ficherosDeclaracion de flujo y apertura de un ficheroExistencia de un ficheroCierre de ficherosLectura y escritura en ficheros de textoLectura y escritura en ficheros binariosPosicionamiento en un ficheroOtras funciones de ficheros

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 3 / 41

Page 4: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosFicheros de cabecera

Ficheros de cabecera

#include<iostream>

#include<fstream>

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 4 / 41

Page 5: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Contenido de la seccion

1 FicherosFicheros de cabeceraDeclaracion de flujosApertura de ficherosDeclaracion de flujo y apertura de un ficheroExistencia de un ficheroCierre de ficherosLectura y escritura en ficheros de textoLectura y escritura en ficheros binariosPosicionamiento en un ficheroOtras funciones de ficheros

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 5 / 41

Page 6: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosDeclaracion de flujos

Declaracion de flujos

ifstream entrada;

ofstream salida;

fstream entrada salida;

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 6 / 41

Page 7: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Contenido de la seccion

1 FicherosFicheros de cabeceraDeclaracion de flujosApertura de ficherosDeclaracion de flujo y apertura de un ficheroExistencia de un ficheroCierre de ficherosLectura y escritura en ficheros de textoLectura y escritura en ficheros binariosPosicionamiento en un ficheroOtras funciones de ficheros

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 7 / 41

Page 8: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosApertura de ficheros

Apertura de un fichero

void ifstream::open (const char * filename, int ios::openmodemode = ios::in);

void ofstream::open (const char * filename, int ios::openmodemode= ios::out|ios::trunc);

void fstream::open (const char * filename, int ios::openmodemode= ios::in|ios::out);

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 8 / 41

Page 9: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosApertura de ficheros

Modos de apertura de un fichero (1/2)

ios::in: abre un fichero en modo de entrada (lectura).

Si el fichero no existe, falla la apertura

ios::out: abre un fichero en modo de salida (escritura).

Si el fichero existe, lo vacia.

ios::binary: abre un fichero en modo binario

Por defecto, los ficheros son abiertos en modo texto.En modo texto, se puede producir la conversion de algunoscaracteres: salto de lınea, retorno de carro, etc.Cualquier fichero puede ser abierto en modo texto o en modobinario.

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 9 / 41

Page 10: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosApertura de ficheros

Modos de apertura de un fichero (2/2)

ios::trunc: descarta el contenido del fichero si es que existe; esla accion predeterminada de ios::out

ios::app: la escritura en el fichero siempre se realiza al final.

ios::ate: abre el fichero y se situa al final del fichero.

Los datos pueden leerse o escribirse en cualquier parte delfichero.El significado de ate es at end, al fin.

ios::nocreate: si no existe el fichero entonces genera un error.

ios::noreplace: si existe el fichero entoces genera un error

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 10 / 41

Page 11: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosApertura de ficheros

Combinacion de modos de apertura de un fichero

ios::in|ios::out: abre un fichero para lectura y escritura.

Si el fichero no existe, falla la apertura

ios::in|ios::binary: abre un fichero para lectura en modobinario.

Si el fichero no existe, falla la apertura

ios::in|ios::out|ios::trunc: abre un fichero para lectura yescritura.

Si el fichero no existe, lo crea.Si el fichero existe, lo vacia.

ios::out|ios::app: abre un fichero para anadir.

Si el fichero no existe, lo crea.

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 11 / 41

Page 12: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosApertura de ficheros

Ejemplo (Apertura de ficheros de entrada o lectura)

ifstream entrada1, entrada2;

entrada1.open(“fichero entrada1”,ios::in);

entrada2.open (“fichero entrada2”);

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 12 / 41

Page 13: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosApertura de ficheros

Ejemplo (Apertura de ficheros de salida o escritura)

ofstream salida1, salida2;

salida1.open(“fichero salida1”,ios::out|ios::trunc);

salida2.open (“fichero salida2”);

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 13 / 41

Page 14: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosApertura de ficheros

Ejemplo (Apertura de ficheros de entrada y salida)

fstream entrada salida1, entrada salida2;

entrada salida1.open(“fichero salida1”,ios::in|ios::out);

entrada salida2.open(“fichero salida2”);

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 14 / 41

Page 15: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Contenido de la seccion

1 FicherosFicheros de cabeceraDeclaracion de flujosApertura de ficherosDeclaracion de flujo y apertura de un ficheroExistencia de un ficheroCierre de ficherosLectura y escritura en ficheros de textoLectura y escritura en ficheros binariosPosicionamiento en un ficheroOtras funciones de ficheros

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 15 / 41

Page 16: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosDeclaracion de flujo y apertura de un fichero

Declaracion de flujo y apertura de un fichero

ifstream entrada (“nombre fichero”);

ofstream salida(“nombre fichero”);

fstream entrada salida(“nombre fichero”);

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 16 / 41

Page 17: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Contenido de la seccion

1 FicherosFicheros de cabeceraDeclaracion de flujosApertura de ficherosDeclaracion de flujo y apertura de un ficheroExistencia de un ficheroCierre de ficherosLectura y escritura en ficheros de textoLectura y escritura en ficheros binariosPosicionamiento en un ficheroOtras funciones de ficheros

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 17 / 41

Page 18: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosExistencia de un fichero

Existencia de un fichero

Si la funcion open no puede abrir un fichero entonces el flujotomara el valor false

Ejemplo

ifstream entrada;

entrada.open(‘‘fichero entrada’’,ios::in);

if (!entrada)

cout << ‘‘No se puede abrir el fichero’’;

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 18 / 41

Page 19: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosExistencia de un fichero

Existencia de un fichero

Si la funcion open no puede abrir un fichero entonces el flujotomara el valor false

Ejemplo

ifstream entrada;

entrada.open(‘‘fichero entrada’’,ios::in);

if (!entrada)

cout << ‘‘No se puede abrir el fichero’’;

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 19 / 41

Page 20: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosExistencia de un fichero

Existencia de un fichero

La funcion is open devuelve true si el fichero esta abierto yfalse en caso contrario

Ejemplo

ifstream entrada;

entrada.open(‘‘fichero entrada’’,ios::in);

if (!entrada.is open())

cout << ‘‘No se puede abrir el fichero’’;

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 20 / 41

Page 21: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosExistencia de un fichero

Existencia de un fichero

La funcion is open devuelve true si el fichero esta abierto yfalse en caso contrario

Ejemplo

ifstream entrada;

entrada.open(‘‘fichero entrada’’,ios::in);

if (!entrada.is open())

cout << ‘‘No se puede abrir el fichero’’;

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 21 / 41

Page 22: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Contenido de la seccion

1 FicherosFicheros de cabeceraDeclaracion de flujosApertura de ficherosDeclaracion de flujo y apertura de un ficheroExistencia de un ficheroCierre de ficherosLectura y escritura en ficheros de textoLectura y escritura en ficheros binariosPosicionamiento en un ficheroOtras funciones de ficheros

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 22 / 41

Page 23: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosCierre de ficheros

Cierre de un fichero

void close();

Ejemplo

entrada1.close();

salida1.close();

entrada salida1.close();

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 23 / 41

Page 24: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosCierre de ficheros

Cierre de un fichero

void close();

Ejemplo

entrada1.close();

salida1.close();

entrada salida1.close();

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 24 / 41

Page 25: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Contenido de la seccion

1 FicherosFicheros de cabeceraDeclaracion de flujosApertura de ficherosDeclaracion de flujo y apertura de un ficheroExistencia de un ficheroCierre de ficherosLectura y escritura en ficheros de textoLectura y escritura en ficheros binariosPosicionamiento en un ficheroOtras funciones de ficheros

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 25 / 41

Page 26: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosLectura y escritura en ficheros de texto

Lectura y escritura en ficheros de texto

Metodo mas sencillo: utilizar los operadores << y >>.

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 26 / 41

Page 27: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosLectura y escritura en ficheros de texto

Ejemplo (Escritura en un fichero de texto)

// Declaracion

ofstream flujo salida;

// Apertura del fichero

flujo salida.open(‘‘prueba.txt’’);

// Escritura en el fichero

flujo salida << 10 << ‘‘ ’’ << 19.75 << ’X’;

flujo salida << ‘‘Final del programa’’;

// Cierre del fichero

flujo salida.close();

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 27 / 41

Page 28: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosLectura y escritura en ficheros de texto

Ejemplo (Lectura de un fichero de texto)

char caracter; float f; int i; char cadena[80];

// Declaracion

ifstream flujo entrada;

// Apertura del fichero

flujo entrada.open(‘‘prueba.txt’’);

// Lectura del fichero de texto: entero, real y caracter

flujo entrada >> i >> f >> caracter;

// Lee hasta que encuentra el primer caracter blanco

flujo entrada >> cadena;

// Cierre del fichero

flujo entrada.close();

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 28 / 41

Page 29: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Contenido de la seccion

1 FicherosFicheros de cabeceraDeclaracion de flujosApertura de ficherosDeclaracion de flujo y apertura de un ficheroExistencia de un ficheroCierre de ficherosLectura y escritura en ficheros de textoLectura y escritura en ficheros binariosPosicionamiento en un ficheroOtras funciones de ficheros

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 29 / 41

Page 30: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosLectura y escritura en ficheros binarios

Lectura de ficheros binarios (1/5)

get:istream & get (char & caracter);

Lee un caracter (byte) del flujo de entrada y lo almacena en elparametro formal caracter

int get ();

Lee un caracter (byte) del flujo de entrada y devuelve sucodigo ASCIISe utiliza para detectar el final de archivo (eof) que se suelerepresentar por -1

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 30 / 41

Page 31: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosLectura y escritura en ficheros binarios

Lectura de ficheros binarios (2/5)

get:istream & get (char *buffer, int numero, char delimitador =’\n’);

Lee caracteres del flujo de entrada y los almacena en bufferhasta que haya leıdo numero - 1 caracteres o el caracterdelimitador o se haya encontrado el final del fichero.Se anade el caracter nulo al final de buffer.Si se encuentra el caracter delimitador, no es extraıdo, sinoque permanece en el flujo de entrada hasta la siguienteoperacion de lectura.

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 31 / 41

Page 32: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosLectura y escritura en ficheros binarios

Lectura de ficheros binarios (3/5)

void getline(char *buffer, int numero, char delimitador =’\n’);

Lee cadenas de caracteres, incluyendo espacios en blanco, y lasalmacena en buffer

Nota

La diferencia entre get y getline se encuentra en que getlinealmacena el caracter delimitador en la cadena antes de anadir elcaracter nulo.

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 32 / 41

Page 33: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosLectura y escritura en ficheros binarios

Lectura de ficheros binarios (4/5)

read: lee numero bytes y los almacena en buffer

istream & read(char *buffer, int numero);istream & read(unsigned *buffer, int numero);istream & read(signed char *buffer, int numer);

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 33 / 41

Page 34: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosLectura y escritura en ficheros binarios

Lectura de ficheros binarios (5/5)

istream & putback (char caracter);

Devuelve al flujo de entrada el ultimo caracter leıdo.

int peek():

Lee el caracter actual del flujo de entrada pero no avanza.

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 34 / 41

Page 35: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosLectura y escritura en ficheros binarios

Escritura en ficheros binarios

ostream & put (char caracter);

Escribe un caracter (byte) en el flujo de salida

write: escribe numero bytes de buffer en el flujo de salida

ostream & write(const char *buffer, int numero);ostream & write(const unsigned *buffer, int numero);ostream & write(const signed char *buffer, int numero);

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 35 / 41

Page 36: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Contenido de la seccion

1 FicherosFicheros de cabeceraDeclaracion de flujosApertura de ficherosDeclaracion de flujo y apertura de un ficheroExistencia de un ficheroCierre de ficherosLectura y escritura en ficheros de textoLectura y escritura en ficheros binariosPosicionamiento en un ficheroOtras funciones de ficheros

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 36 / 41

Page 37: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosPosicionamiento en un fichero

Posicionamiento en un fichero de lectura

seekg:istream & seekg(streampos pos);

Posiciona el cursor de lectura en el lugar indicado por pos

istream & seekg(streamoff desp, seek dir dir);

Desplaza el cursor de lectura el numero de bytes indicados pordesp teniendo en cuenta la direccion especificada por dir: beg,cur, end (principio, posicion actual y final del fichero).

streampos tellg();

Devuelve la posicion actual del flujo de entrada o -1 si seproduce un error.

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 37 / 41

Page 38: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosPosicionamiento en un fichero

Posicionamiento en un fichero de escritura

seekp:ostream & seekp(streampos pos);

Posiciona el cursor de escritura en el lugar indicado por pos

ostream & seekp(streamoff desp, seek dir dir);

Desplaza el cursor de escritura el numero de bytes indicadospor desp teniendo en cuenta la direccion especificada por dir:beg, cur, end (principio, posicion actual y final del fichero).

streampos tellp();

Devuelve la posicion actual del flujo de salida o -1 si seproduce un error.

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 38 / 41

Page 39: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Contenido de la seccion

1 FicherosFicheros de cabeceraDeclaracion de flujosApertura de ficherosDeclaracion de flujo y apertura de un ficheroExistencia de un ficheroCierre de ficherosLectura y escritura en ficheros de textoLectura y escritura en ficheros binariosPosicionamiento en un ficheroOtras funciones de ficheros

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 39 / 41

Page 40: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

FicherosOtras funciones de ficheros

Otras funciones

bool eof() const;

Devuelve true si se ha alcanzado el final del archivo; en casocontrario, devuelve false

bool good() const;

Indica si la operacion de lectura anterior ha tenido exito.

bool fail() const;

Indica que la siguiente operacion de lectura fallara.

bool bad() const;

El flujo de entrada esta corrompido.

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 40 / 41

Page 41: Ficheros en C++ - Universidad de Córdoba · C++ Ficheros Ficheros en C++ Prof. Dr. Nicol as Luis Fern andez Garc a Departamento de Inform atica y An alisis Num erico Escuela Polit

C++ Ficheros

Ficheros en C++

Prof. Dr. Nicolas Luis Fernandez Garcıa

Departamento de Informatica y Analisis NumericoEscuela Politecnica Superior

Universidad de Cordoba

Universidad de Cordoba: Escuela Politecnica Superior Grado de Ingenierıa Informatica 41 / 41