FILE CSV
3^ INFORMATICO - IIS PASCAL�DIPARTIMENTO INFORMATICA
ARGOMENTI
2
CHE COS’È UN FILE CSV?
3
ESEMPIO di file CSV
4
nome,cognome,classe,sezione,matricola�Mario,Giallini,3,M,276781�Luca,Urbani,3,M,237098�Franca,Losi,2,A,182712�Antonella,Franchi,1,B,277265
studenti.csv
PERCHE’ USARE I FILE CSV
5
Esportazione di dati da foglio elettronico
Formato standard per il passaggio di dati fra applicazioni diverse
Permettono di dare una senso semantico ai dati presenti
Permettono di gestire dati di tipi diversi (al netto di casting)
Ottima soluzione per backup e recovery da database.
PARSING DI FILE CSV
6
Il parsing di file csv è una operazione molto standardizzata e consiste di vari passi
ESEMPIO DI CODICE
7
int main() {
ifstream fin("studenti.csv");
// in ogni riga i campi sono delimitati da ,
// leggo la prima riga che contiene solo le etichette
string s;
getline(fin, s);
// leggo tutte le altre righe e le divido
while (!fin.eof()) {
string nome,cognome,classe_s,sezione,matricola;
int classe;
getline(fin, nome, ',');
if (nome == "") { // ho trovato una riga vuota
break;
}
getline(fin, cognome, ',');
getline(fin, classe_s, ','); // questo valore dovrà essere trasformato a intero se necessario
classe = stoi(classe_s); // è necessario il casting perché getline legge SOLO stringhe
getline(fin, sezione, ',');
getline(fin, matricola);
}
fin.close();
return 0;
}
Il codice di parsing del file studenti.csv prima indicato può essere il seguente
C++
ESERCIZIO RISOLTO
8
Sia dato il file CSV sportivi.csv con la struttura seguente.�Scrivi un programma C++ che legge da input il nome N di una nazione, poi legge il file e stampa a video i dati degli sportivi di quella nazione
nome,cognome,sport,eta,nazione
Alice,Rossi,Calcio,25,Italia
Bob,Smith,Basket,28,Stati Uniti
Carla,Martinez,Pallavolo,24,Spagna
David,Lee,Equitazione,30,Regno Unito
Elena,Gonzalez,Calcio,22,Argentina
Federico,Sanchez,Basket,27,Messico
Gina,Wang,Pallavolo,26,Cina
Hugo,Andersson,Equitazione,29,Svezia
Isabella,Müller,Calcio,24,Germania
John,Kim,Basket,31,Corea del Sud
Katarina,Novak,Pallavolo,23,Repubblica Ceca
Luis,Chen,Equitazione,28,Taiwan
Maria,Lopez,Calcio,26,Spagna
sportivi.csv
SOLUZIONE
9
ESERCIZIO PER IL LETTORE
10
Sia dato il file CSV libri.csv con la struttura seguente.�Scrivi un programma C++ che legge il file libri.csv e stampa titolo e prezzo dei libri in ordine di prezzo decrescente.
Nel file possono esserci al massimo 100 libri
titolo,autore,editore,pagine,costo
Il Signore degli Anelli,J.R.R. Tolkien,HarperCollins,1178,25.99
1984,George Orwell,Penguin Books,328,12.99
Cronache di Narnia,C.S. Lewis,HarperCollins,752,20.50
Il Grande Gatsby,F. Scott Fitzgerald,Scribner,180,9.99
Harry Potter e la Pietra Filosofale,J.K. Rowling,Bloomsbury,332,19.95
Il Codice da Vinci,Dan Brown,Random House,593,18.99
Orgoglio e Pregiudizio,Jane Austen,Penguin Classics,432,14.75
La Ragazza di Fuoco,Suzanne Collins,Scholastic,391,16.49
Il Nome del Vento,Patrick Rothfuss,DAW Books,662,22.00
Il Vecchio e il Mare,Ernest Hemingway,Scribner,127,8.99
La Città delle Bestie,Isabel Allende,HarperCollins,346,15.25
La Storia Infinita,Michael Ende,Doubleday,396,13.99
Cime Tempestose,Emily Brontë,Penguin Classics,416,12.50
La Ragazza che Giocava con il Fuoco,Stieg Larsson,Vintage Books,503,14.95
libri.csv
ESERCIZIO RISOLTO
11
Sia dato il file olympiad.csv
Scrivi un programma con menu testuale per le seguenti operazioni: