Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
Classe CSV

Classe CSV

19364_size.png
CAVEAT! La versione 1.4.1 della classe contiene difetti e incongruenze che si è tentato di correggere in versioni successive. Per ottenere la versione più recente del programma NON usate il file zip ottenibile tramite il pulsante "Download", bensì fate riferimento ai file reperibili presso http://tinyurl.com/jdyorup.

========================================

Una classe in C++ che può essere adibita all'importazione e alla lettura rapida dei dati contenuti in un file in formato CSV (il contenuto del file viene interamente caricato in memoria, per cui la classe non è adatta a gestire file di dimensioni enormi).






Le funzioni membro pubbliche previste sono:

Codice sorgente - presumibilmente Java

  1. // funzioni creatrici

  2. CSV();

  3. CSV( const char *dati, char sep = ',' );  // throws const char*

  4. CSV( FILE *dati, char sep = ',' );        // throws const char*

  5.  

  6. // funzioni per la reimpostazione di oggetti gia' esistenti

  7. void set_csv( const char *dati, char sep = ',' ); // throws const char*

  8. void set_csv( FILE *dati, char sep = ',' );       // throws const char*

  9.  

  10. // funzioni per ottenere i dati contenuti nell'oggetto

  11. int get_nColonne( void );

  12. int get_nRighe( void );

  13. double get_dato_num( int riga, int colonna );

  14. const char *get_dato( int riga, int colonna );

  15. int get_dimDato( int riga, int colonna );




La classe dispone del costruttore di copia e implementa l'overload dell'operatore di assegnamento (=) per una corretta gestione della memoria dinamica nella duplicazione degli oggetti.

Informazioni più dettagliate sulla classe possono essere ricavate dal file documentazione.pdf e dalla lettura del codice sorgente.

Esempio d'uso:

Codice sorgente - presumibilmente C++

  1. #include <stdio.h>

  2. #include "csv.h"

  3.  

  4. const char *kStrNomeFile = "dati_esempio.txt";

  5.  

  6. int main() {

  7.     FILE *fDati = fopen( kStrNomeFile, "r" );

  8.  

  9.     if( fDati != NULL ) {

  10.         try {

  11.             CSV csv( fDati ); // oggetto inizializzato passando un

  12.                               // file stream aperto in lettura testuale

  13.  

  14.             // ricava dall'oggetto il numero delle righe e delle colonne

  15.             int r, totRighe   = csv.get_nRighe();

  16.             int c, totColonne = csv.get_nColonne();

  17.  

  18.             printf( "\nIl file \"%s\" contiene %d righe.\n", kStrNomeFile, totRighe );

  19.             printf( "Ha un massimo di %d colonne per riga.\n\n", totColonne );

  20.  

  21.             // rileva e mostra il contenuto del file,

  22.             // riga per riga, colonna per colonna

  23.             printf( "Contenuto del file:\n\n" );

  24.  

  25.             for( r=0; r<totRighe; ++r ) {

  26.                 for( c=0; c<totColonne; ++c )

  27.                     printf( "%s\t", csv.get_dato(r,c) );

  28.                 printf( "\n" );

  29.             }

  30.  

  31.             // rileva e mostra la lunghezza di alcuni elementi del file

  32.             for( c=0; c<totColonne; ++c ) {

  33.                 printf( "\nLa stringa \"%s\" ", csv.get_dato(0,c) );

  34.                 printf( "conta %d caratteri.", csv.get_dimDato(0,c) );

  35.             }

  36.         } catch( const char *errore ) {

  37.             // cattura le eventuali eccezioni di

  38.             // tipo const char* lanciate dall'oggetto

  39.             printf( "\n\nERRORE: %s\n\n", errore );

  40.         } catch( ... ) {

  41.             // cattura eventuali altre eccezioni (ad esempio

  42.             // quelle eventualmente lanciate dall'operatore new)

  43.             printf( "\n\nERRORE: dati non caricati\n\n" );

  44.         }

  45.     }

  46.     else {

  47.         printf( "\n\nERRORE: file non aperto\n\n" );

  48.     }

  49.  

  50.     printf( "\n\nEsecuzione terminata.\n" );

  51.     printf( "Premi \"Invio\" per uscire dal programma.\n" );

  52.     getchar(); // attende "invio" prima d'uscire

  53.  

  54.     if( fDati != NULL ) fclose( fDati );

  55.     return 0;

  56. }




Categoria: Moduli e librerie / C++
Piattaforma:

Downloads: 239
Rating: (1 voti)
Data: 08/01/2015
Download

A proposito dell'autore

Amatore, autodidatta dai tardi anni '90. Prime esperienze in HyperTalk. Successivamente, C con qualche infarinatura di C++.

Aggiungi un commento

Inserisci il tuo commento qui
Esegui il login oppure registrati per inviare commenti