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.