1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
#include <sstream>
#include <string>
#include <vector>
#include <iostream>
using namespace std;
//represente un enregistrement
struct Enregistrement {
std::string nom;
std::string valeur;
std::string index;
std::string diviseur;
std::string unite;
};
//lit un enregistrement a partir d'un flux, renvoie vrai si les 5 champs sont lus
bool parse( std::istream & s, Enregistrement & e )
{
//nom
return std::getline( s, e.nom, ';' )
&& std::getline( s, e.valeur, ';' )
&& std::getline( s, e.index, ';' )
&& std::getline( s, e.diviseur, ';' )
&& std::getline( s, e.unite, ';' ) ;
}
//affiche avec un formatage "maison"
void print( Enregistrement const& e ){
std::cout << "----------------------" << std::endl;
std::cout << "nom : " << e.nom << std::endl;
std::cout << "valeur : " << e.valeur << std::endl;
std::cout << "index : " << e.index << std::endl;
std::cout << "diviseur : " << e.diviseur << std::endl;
std::cout << "unite : " << e.unite << std::endl;
std::cout << "----------------------" << std::endl;
}
int main()
{
// 0;1;2;3;4;0;1;2;3;4
istringstream iss( "nom;valeur;index;diviseur;unite;nom1;valeur;index;diviseur;unite" );
std::vector< Enregistrement > enregistrements ;
Enregistrement e ;
while ( parse( iss, e ) )
{
enregistrements.push_back(e);
}
std::cout << enregistrements.size() << " enregistrement(s) lu(s)" << std::endl;
for ( std::vector< Enregistrement >::const_iterator it = enregistrements.begin(); it != enregistrements.end(); ++it ){
print( *it );
}
return 0;
} |
Partager