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
| #include <iostream>
#include <string>
#include <vector>
#include <fstream>
#include <algorithm>
#include <iterator>
using namespace std;
struct Unsigne
{
string signenom;
int signean;
int signejour;
int signemois;
}
// Surcharge de l'opérateur >> pour lire des Unsigne à partir d'un flux
istream& operator >>(istream& is, Unsigne& u)
{
return is >> u.signenom >> u.signean >> u.signejour >> u.signemois;
}
// Surcharge de l'opérateur << pour afficher des Unsigne sur un flux
ostream& operator <<(ostream& os, const Unsigne& u)
{
return os << u.signenom << " " << u.signean << " " << u.signejour << " " << u.signemois;
}
// Ouverture du fichier
ifstream File("Toto.txt");
// Déclaration et remplissage du vecteur de Unsigne
vector<Unsigne> Tab((istream_iterator<Unsigne>(File)), istream_iterator<Unsigne>());
// Foncteur servant à identifier un Unsigne selon son champ signenom
struct FindSigneNom
{
FindSigneNom(const string& s) : Signe(s) {}
bool operator()(const Unsigne& u) const
{
return u.signenom == Signe;
}
private :
string Signe;
};
// Recherche du premier Unsigne correspondant au critère
vector<Unsigne>::iterator It = std::find_if(Tab.begin(), Tab.end(), FindSigneNom("Cochon"));
// Affichage de ses infos - si on a bien trouvé un élément correspondant
if (It != Tab.end())
cout << *It << endl; |
Partager