no save
Assistance
Achat
News

Forum | programmation
Aide C++ : Structure & Fichier
mamiemando, le jeu. 13 avr. 2006 à 20:23:05
Il manque la fin du programme. En fait c'est vraiment très simple à faire si tu utilises la structure map<> de la STL :
http://www.sgi.com/tech/stl/Map.html

L'exemple donné sur la page parle de lui-même en ce qui concerne l'insertion d'élément dans une map (opérateur []). Or l'opérateur ordonnant les std::string est par défaut (la vie est bien faite !) l'ordre alphabétique ;-)

#include <fstream>
#include <iostream>
#include <string>
#include <map>

// Une structure contenant les infos
struct infos{
std::string nom;
std::string prenom;
std::string appareil;
std::string prise;
std::string inventaire;
std::string adresse_ip;
};

// Parser une ligne d'info
bool read_line_infos(
const std::string & f_in,
struct infos & data
){
//Lit une chaine et met infos dans data
//return true si tout va bien, false sinon
}

// Lire le fichier d'info et le mettre dans un dico
bool read_file_infos(
std::string & filename_in,
std::map<std::string,struct infos> & dico
){
std::ifstream f_in(filename_in);
if (f_in){
std::string ligne; // variable contenant chaque ligne lue

// cette boucle s'arrête dès qu'une erreur de lecture survient
for(unsigned int no_line=1;std::getline(fichier, ligne);++no_line){
// afficher la ligne à l'écran
struct infos data;
if( !read_line_infos(ligne,data) ){
std::cerr << "La ligne " << no_line
<< "["<< ligne << "]" << std::endl;
}else{
dico[data.nom]=data;
}
}
return true;
}
std::cerr << "Le fichier " << filename
<< "n'a pu être ouvert" << std::endl;
return false;
}


bool read_file_infos(
std::string & filename_out,
const std::map<std::string,struct infos> & dico
){
std::ofstream f_out(filename_out);
if(f_out){
std::map<std::string,struct infos>::const_iterator
dit(dico.begin()),
dend(dico.end());
for(;dit!=dend;++dit){
const struct_info & data=dit->second;
f_out << data.nom << "\t" << data.prenom << std::endl;
}
return true;
}
return false;
}

int main(){
const std::string filename_in="plop.txt";
const std::string filename_out="plop2.txt";
std::map<std::string,struct infos> dico;

// Lire le fichier
read_file_infos(filename_in,dico);

// Ecrire les datas
read_sorted_file_infos(filename_out,dico);
return 0;
}

Ou quelque chose dans l'idée ;-)

Bonne chance
PrécédentLouise
avr. 06
Louise
avr. 06
Suivant
REPONSES
mamiemando
avr. 06
Louise
avr. 06
mamiemando
avr. 06
Louise
avr. 06
mamiemando
avr. 06
Louise
avr. 06
Louise
avr. 06
Louise
avr. 06
mamiemando
avr. 06
Louise
avr. 06
Version Web
Réalisé par RedShift
no save