• Non ci sono risultati.

I NPUT E OUTPUT SU FILE

N/A
N/A
Protected

Academic year: 2021

Condividi "I NPUT E OUTPUT SU FILE"

Copied!
8
0
0

Testo completo

(1)

Laboratorio di programmazione

Lezione VII

Tatiana Zolo

tatiana.zolo@libero.it

1

(2)

I NPUT E OUTPUT SU FILE

➜ #include <fstream>

➜ classe fstream:

➜ ifstream: input file stream (per leggere).

➜ ofstream: output file stream (per scrivere).

Per aprire uno stream di input occorre dichiarare che appartiene alla classe ifstream: ifstream in;.

Per aprire uno stream di output occorre dichiarare che appartiene alla classe ofstream: ofstream out; .

Uno stream che eseguirà operazioni di input ed output deve appartenere alla classe fstream: fstream entrambi; .

INPUT E OUTPUT SU FILE 2

(3)

I FSTREAM : APERTURA E CHIUSURA FILES

➜ nome del file:

char nome_file[] = ’’prova.txt’’;

N.B. devono essere stringhe C (non C++)!

➜ aprire il file in lettura:

ifstream in_file(nome_file);

oppure

ifstream in_file(’’prova.txt’’);

➜ controllo errori di apertura:

if (!in_file) { ... }

if (in_file.fail()) { ... }

➜ operazioni con l’oggetto istream definito.

➜ chiudere il file:

in_file.close();

IFSTREAM: APERTURA E CHIUSURA FILES 3

(4)

I FSTREAM : LETTURA DATI

➜ Operatore >>:

in_file >> variabile_tipata;

N.B. I caratteri di spaziatura vengono omessi!

➜ Funzione get(): dato c un carattere

c = in_file.get(); oppure in_file.get(c);

➜ Funzione (booleana) eof(): rilevamento della fine del file

while (!in_file.eof()) { ... }

Restituisce “true” se è stata raggiunta la fine del file, cioè è stato letto l’ultimo carattere del file; restituisce “false” altrimenti.

Carattere speciale EOF:

while ((c = in_file.get()) != EOF) ...;

es. legge_file_get.cpp , legge_file_cin.cpp .

IFSTREAM: LETTURA DATI 4

(5)

O FSTREAM : APERTURA E CHIUSURA FILES

➜ nome del file:

char nome_file[] = ’’prova.txt’’;

N.B. devono essere stringhe C (non C++)!

➜ aprire il file in scrittura: se non esiste lo crea, se esiste lo sovrascrive.

ofstream file_out(nome_file); oppure ofstream file_out(’’prova.txt’’); .

Modalità ios::app: l’output viene aggiunto alla fine del file a cui è destinato (non sovrascrive).

➜ controllo errori di apertura: if (!out_file) { ... } oppure if (out_file.fail()) { ... } .

➜ operazioni con l’oggetto ostream definito.

➜ chiudere il file:

out_file.close();

OFSTREAM: APERTURA E CHIUSURA FILES 5

(6)

O FSTREAM : SCRITTURA DATI

➜ Operatore <<:

out_file << variabile_tipata;

➜ Funzione put():

out_file.put(’a’);

➜ Funzione eof(): è sempre falsa, si possono sempre aggiungere bytes.

es. scrive_su_file.cpp , legge_file_cin.cpp .

OFSTREAM: SCRITTURA DATI 6

(7)

OPEN ()

Si può definire un oggetto ifstream o ofstream senza specificare un file, che può essere associato in seguito mediante la funzione open().

ifstream in_file;

...

in_file.open(file_name);

// Controlla se open e’ fallita.

if (!in_file) { ...

}

OPEN() 7

(8)

E SERCIZI

1. Copiare il contenuto di un file in un altro. Alla fine stampare a video il numero di bytes copiati. ( copia_file.cpp .)

2. Riprendere l’esercizio n

2 della lezione scorsa. Leggere da file 10 struct di persone con due campi, nome ed età, e restituire il nome della più giovane (o di una delle più giovani) con la relativa età (usare un’array di struct). Utilizzare una funzione che

restituisca l’indice della persona più giovane presente nell’array.

( piu_giovane_file.cpp .)

3. Esercizio tipo esame:

http://www.math.unipr.it/~gianfr/Teaching/

FondProgr/compiti.html Compito del 23/6/2004.

ESERCIZI 8

Riferimenti

Documenti correlati

whose name is distinct from all other existing files, and opens the file for binary writing and reading (as if the mode string &#34;wb+&#34; were used in an fopen() call). If

Si osserva che, pur essendo tutti gli autovalori di B inclusi nell’intervallo [10 −6 , 10 −2 ], ed essendo massimo il rango della matrice (pari alla dimensione della matrice),

• FileOutputStream implementa questi metodi nel caso parti- colare in cui l’output è un file, il cui nome è passato al costrut- tore di FileOutputStream ; in alternativa si

This example assumes that TESTFILE is a file with a few lines of data written to it using the Write # statement; that is, each line contains a string in quotations and a

¨  Se la stringa di formato contiene un white space, la scanf legge zero o più white space, che verranno scartati, fino al primo carattere non white space.

o implementare una funzione virtuale nella classe base implementata nelle classi derivate (con output). o implementare una funzione virtuale nella classe base non implementata

 An efficient means of transferring data directly between I/O and memory for large data transfers since programmed I/O is suitable only for slow devices and individual

nei testi, nelle pubblicazioni ed in ogni altra forma di divulgazione di studi, analisi ed elaborazioni di qualsiasi tipo realizzati dal soggetto richiedente utilizzando in tutto o