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
|
#include <map> // pour std::map
#inlcude <string> // pour ... std::string
#include <fstream> // pour std::ifstream et std::ofstream
#inlude <iostream> // pour std::cin et std::cout
#include <ssream> // pour std::stringstream
int main()
{
std::cout<<"Introdusez le nom du fichier à trier :";
std::string filename;
std::cin>>filename;
std::map<std::string, std::string> lamap;
/* la récupération du contenu du fichier.
* Les données récupérées sont introduites directement dans ù
* le conteneur ad-hoc ;)
*/
{
std::ifstream ifs(filename.c_str());
std::string temp;
/* tant que nous arrivons à lire quelque chose dans le fichier*/
while(std::getline(ifs,temp)
{
std::stringstream ss;
ss<<temp;
/* récupérons la clé et la valeur */
std::string key;
std::string value;
ss>>key>>value;
/* et plaçons les dans le tableau associatif */
lamap.insert(std::make_pair(key, value) );
}
}
/* le conteneur map étant automatiquement trié par la clé,
* nous pouvons directement réécrire les éléments dans le fichier
* (il sera détruit et réécrit)
*/
std::ofstream ofs(filename.c_str());
for(std::map<std::string, std::string>::const_iterator it = lamap.begin();
it!=lamap.end();++it)
ofs<<(*it).first<<" "<<(*it).last<<std::endl;
/* c'est fini :D */
return 0;
} |