Uno stream rappresenta un flusso di dati da cui e' possibile

Documenti analoghi
Fondamenti di Informatica 2008 corso prof. A. Picariello. Operazioni sui FILE in C++

Laboratorio di Informatica

Informatica e Laboratorio di Programmazione C++ stream Alberto Ferrari. Alberto Ferrari Informatica e Laboratorio di Programmazione

Concetto di stream. c i a o \0. c i a o \0. c i a o \0

Gli stream. ios ostream. istream. iostream

Gestione di files Motivazioni

ISTITUTO TECNICO INDUSTRIALE STATALE LA GESTIONE DEI FILE DI TESTO IN C++

Ho raggiunto la fine del file Provo a leggere un intero, ma il dato che prelevo dal file non è un intero

INFORMATICA File di testo in C Roberta Gerboni

Corso di Algoritmi e Strutture Dati Lezione del Esercitatrice: dott.ssa Susanna Cozza. L argomento della lezione

Input/Output. Input/Output. Lezione 16

Fondamenti di Informatica II 24. Gestione I/O e File in C++

Laboratorio di Algoritmi e Strutture Dati 2001/02 1

Classi, oggetti e librerie per l'i/o

1. Soluzione esercizio XYZ SpA

Gli stream Classi, oggetti e librerie per l I/O cout, cin I manipolatori di stream, la libreria <iomanip> I flag di formattazione Gerarchia di dati

Gestione dei file di dati

Ingresso ed Uscita(1)

2) FILE BINARI: è una sequenza di byte avente una corrispondenza uno a uno con la sequenza ricevuta dal dispositivo esterno.

Input / Output attraverso stream. I/O in C vs. I/O in C++

Ancora sull I/O di File in C++

La programmazione Orientata agli Oggetti: OOP

Programmazione Procedurale in Linguaggio C++

Cosa serve per cominciare?

Corso di Fondamenti di Informatica Tipi strutturati: Stringhe

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

ingresso/uscita da file

Programmazione Procedurale in Linguaggio C++

La gestione di file in C++

Input/output in C++: la libreria iostream Stringhe in C++: il tipo std::string

Input/output in C e in C++

4. Accesso diretto per gli archivi con record a lunghezza costante

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Laboratorio di Programmazione Gruppo III, Ml-ZZ. Alberto Finzi

Soluzione del 15 febbraio 2016

Streams e disk files

Le classi. Classi derivate

Passaggio di parametri per valore

Standard Input e Standard Output

Operazioni su file di caratteri

Le operazioni I/0 in C++

Programmazione Procedurale in Linguaggio C++

Le operazioni di Input e Output

ingresso/uscita da file

I/O FILE. Sommario I/O FILE. I/O FILE LETTURA DA FILE DI TESTO oggetto di tipo ifstream. I/O FILE: lettura e scrittura su file di testo

Ereditarietà. Unità 9. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

BOZZA. cin per la comunicazione dal dispositivo di input standard, la tastiera, al programma (stream di input standard)

Corso di Programmazione ad oggetti

Lettura e scrittura di file di dati input/output

Files in C++ Fondamenti di Informatica. R. Basili. a.a

A. Veneziani - I file di testo in C++

INPUT/OUTPUT INPUT/OUTPUT

I file. Record logici e record fisici

File. Unità 8. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Text files, streams. I file che ci interessano sono file di testo. anche se, logicamente, contengono numeri o altro

A. Veneziani Files di record

Descrittori di formato

Funzioni di libreria. Richiedono tutte. #include <math.h> fabs(x) sqrt(x) pow(x,a) exp(x) log(x)

Corso di Fondamenti di Informatica Prof. Aldo Franco Dragoni Prova scritta del 21/06/2010. Avvertenze. Specifiche

Introduzione al C. Stream e disk file

Gestione dei File. Credits Prof. Campi

Operazioni base di Input e Output

INPUT/OUTPUT. L'immissione dei dati di un programma e l uscita dei suoi risultati avvengono attraverso operazioni di lettura e scrittura

Esercitazioni di Fondamenti di Informatica - Lez. 9 4/12/2018

GESTIONE DEI FILE IN C. Docente: Giorgio Giacinto AA 2008/2009

Descrittori di formato

FileInputStream read() read(byte[]) readint() DataInputStream FileInputStream EOFException

Quando usare file di dati

Esercitazioni di FONDAMENTI DI INFORMATICA MODULO B

Perchè i files? Realizzano la persistenza dei dati. Sono delle strutture di dati sequenziali. dati che sopravvivono all esecuzione del programma

Standard I/O. Franco Maria Nardini

Capitolo 5 -- Stevens

Sommario PREFAZIONE... XI CAPITOLO 1: INTRODUZIONE: I COMPUTER, LA PROGRAMMAZIONE E IL C

L'immissione dei dati di un programma e l uscita dei suoi risultati avvengono attraverso operazioni di lettura e scrittura

Il linguaggio C. Breve panoramica su stdio.h

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

Laboratorio di Programmazione

File binari e file di testo

I files in C. A cura del prof. Ghezzi

FONDAMENTI DI INFORMATICA. Prof. PIER LUCA MONTESSORO Ing. DAVIDE PIERATTONI. Facoltà di Ingegneria Università degli Studi di Udine

Capitolo 3 -- Stevens

La programmazione Object Oriented e le sue applicazioni in Fisica.

Input. Il tipo char Alcune modalità di acquisizione di input. Laboratorio di Programmazione - Luca Tesei

Programmazione I Prova scritta - 10 gennaio h20min

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Dal C al C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi

Corso di Informatica A.A

PROGRAMMAZIONE II canale A-D luglio 2008 TRACCIA DI SOLUZIONE

Fondamenti di Informatica L-A

#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++

INPUT OUTPUT Programmazione in rete e laboratorio. Le operazioni di I/O avvengono attraverso stream (sequenze di byte)

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Input / Output. Come già detto, input e output sono realizzati in C da funzioni di stdio.h all'interno della libreria standard

Corso sul linguaggio Java

Lezione 16 programmazione in Java

Input/Output. Console e File.

Transcript:

L'I/O in C++ e' basato sul concetto di stream. Uno stream rappresenta un flusso di dati da cui e' possibile prelevare caratteri (input stream) inserire caratteri (output stream) I vari tipi di stream sono rappresentati nella Standard Library mediante una gerarchia di classi istream : definisce uno stream di input che puo' essere utilizzato per leggere dati ostream : definisce uno stream di output che puo' essere utilizzato per scrivere dati istream eostream sono istanziazioni delle classi template basic_istream<> e basic_ostream<> che usanochar come tipo di carattere wistream ewostream sono istanziazioni delle classi template basic_istream<> e basic_ostream<> che usanowchar_t come tipo di carattere Laboratorio di Informatica 136

istream eostream sono utilizzate come classi base di varie classi concrete. Per poter leggere o scrivere su uno stream e' necessario istanziare, a seconda delle esigenze, una delle classi concrete, ad es.ifstream,ofstream,istringstream, ostringstream class ifstream : public istream {...; definisce uno stream di input che puo' essere utilizzato per leggere dati da file class ofstream : public ostream {...; definisce uno stream di input che puo' essere utilizzato per scrivere dati su file Per utilizzare ifstream e ofstream bisogna includere <fstream> Laboratorio di Informatica 137

class istringstream : public istream {...; definisce uno stream di input che puo' essere utilizzato per leggere dati dastring class ostringstream : public ostream {...; definisce uno stream di input che puo' essere utilizzato per scrivere dati sustring Per utilizzare istringstream e ostringstream bisogna includere <stringstream> La definizione di argomenti di tipo istream& e ostream& permette, grazie al polimorfismo, di scrivere codice utilizzabile qualunque sia il tipo concreto di stream a cui tali argomenti si riferiscono. class MyParser { public: void parse(istream &is); ; void doparse() { ifstream ifs("c:\\mydoc.txt"); MyParser parser; parser.parse(ifs); string s = ; istringstream iss(s); parser.parse(iss); Laboratorio di Informatica 138

Modalità di lettura/scrittura da/a stream input/output formattato input/output non formattato Input/Output formattato: Si usano gli operatori di estrazione e inserimento ( operator>> e operator<<) L operatore di estrazione da stream usa gli spazi per separare i valori in input Input/Output non formattato: int istream::get(); istream& getline(char* pch, int count, char delim = '\n' ); istream& read( char* pch, int ncount ); ostream& put( char ch ); ostream& write( const char* pch, int ncount ); Laboratorio di Informatica 139

: apertura di uno stream su file ios::in ios::out ios::app Apre un file in input Apre un file in output. L uso diios::out su unofstream senza specificare ios::app, ios::ate, o ios::in, implica l utilizzo implicito di ios::trunc Apre un file in output e aggiunge l'output alla fine del file ios::ate Apre un file esistente (in input o output) e si sposta alla fine del file. ios::trunc Elimina il contenuto del file se esiste ios::nocreate Apre un file solo se già esiste. Se il file non esiste l'operazione fallisce ios::noreplace Apre un file solo se non esiste. Se il file esiste l'operazione fallisce ios::binary Apre un file in modalità binaria (il default è la modalità testo). Laboratorio di Informatica 140

: apertura di uno stream su file La modalità di apertura viene specificata come argomento del costruttore ios::open_mode iosmode = ios::binary; ifstream ifs1( file1, iosmode); ifstream ifs2( file2 ); // il default è ios::in ofstream ofs1( file1, ios::app); ofstream ofs2( file2 ); // il default è ios::out ios::trunc o come argomento del metodo open ifstream ifs3; ifs3.open(filepath3, iosmode ); Come sappiamo se l apertura dello stream è fallita? Laboratorio di Informatica 141

: apertura di uno stream su file Per sapere se l apertura dello stream è fallita si può utilizzare ios::fail if (ifs.fail()){ // open è fallita, ad es. perchè il file non esiste oppure ios::operator! if (!ifs) { // open è fallita, ad es. perchè il file non esiste oppure ios::operator void* (restituisce 0 se failbit o badbit sono impostati a 1) if (ifs) { // open è riuscita Laboratorio di Informatica 142