Home

VDTPARSER: una classe per il parsing delle std::string


Se programmate in C++ quasi sicuramente avrete usato la standard template library (STL) e in particolare la classe string. Una delle limitazioni che ho sempre trovato nella classe string riguarda l'assenza di un metodo di parsing: ad esempio suddividere la stringa "sono una stringa" nei tre tokens che la compongono ("sono", "una", "stringa") richiede la scrittura di parecchie linee di codice, o l'uso della funzione di libreria del C strtok(). Per semplificarmi la vita ho realizzato una piccola classe C++ denominata VDTParser che effettua il parsing di oggetti stl::string. Il prefisso "VDT" nel nome della classe non lo ho aggiunto per megalomania, ma perché (ovviamente...) esiste già un header Parser.h da qualche parte.

VDTParser.h è rilasciato sotto licenza BSD, e lo potete scaricare da questo link. Come si usa ? Credo che l'esempio seguente sia più che eloquente:


#include "VDTParser.h"
#include <iostream>
using namespace std;

#pragma argsused
int main(int argc, char* argv[])
{

   VDTParser    P
("The quick brown fox jumps over the lazy dog");
 
   for(unsigned int i =0; i < P.size(); i++)
       cout << i << " " << P.Get(i) << endl;
   cout << "---------" << endl;

   P.reset("fabrizio ha visto max acquistandogli juta per new york");
   for(unsigned int i =0; i < P.size(); i++)
       cout << i << " " << P.Get(i) << endl;
   cout << "---------" << endl;

   P.append("Voyez le brick geant que j'examine pres du wharf");
   for(unsigned int i =0; i < P.size(); i++)
       cout << i << " " << P.Get(i) << endl;
   cout << "---------" << endl;

   VDTParser    Q("fir1=10000.0,12000.0,15000.0,20000.0", "=,");
   for(unsigned int i =0; i < Q.size(); i++)
       cout << i << " " << Q.Get(i) << endl;
}


E questa è l'uscita del programma:

0 The
1 quick
2 brown
3 fox
4 jumps
5 over
6 the
7 lazy
8 dog
---------
0 fabrizio
1 ha
2 visto
3 max
4 acquistandogli
5 juta
6 per
7 new
8 york
---------
0 fabrizio
1 ha
2 visto
3 max
4 acquistandogli
5 juta
6 per
7 new
8 york
9 Voyez
10 le
11 brick
12 geant
13 que
14 j'examine
15 pres
16 du
17 wharf
---------
0 fir1
1 10000.0
2 12000.0
3 15000.0
4 20000.0

Nel file VDTParser.h troverete comunque una breve descrizione dei metodi della classe.



Home

Tutti i diritti riservati. La riproduzione di testo e figure di questo sito è protetta dalle norme di legge internazionali sul diritto d'autore.