/* Historique: ----------- Module: demo12exo2sol.cpp Auteur: Mohamed Lokbani Date création: 23 novembre 1999 Version: 1.07 Modifications: 06 décembre 2003 - M.Lokbani - comments + gcc3.2 11 novembre 2000 - M.Lokbani - gcc2.95 18 juin 2000 - M.Lokbani - la même chose en Perl 12 juin 2000 - M.Lokbani - mise à jour pour E00 30 mars 2000 - M.Lokbani - modification dans le destructeur au niveau de la commande system 03 decembre 1999 - M.Lokbani - comments + ajout de la commande system 24 novembre 1999 - P.Langlais - solution 23 novembre 1999 - M.Lokbani - l'énoncé Copyright (C) 2003 Université de Montréal Département d'informatique et de Recherche Opérationnelle Mohamed Lokbani -- Tous Droits Réservés -- All Rights Reserved -- */ #include "demo12exo2sol.h" // Manière d'initialiser une constante statique const int SetR::taille_tampon = 10000; // une longue ligne (pas tres propre) // La partie définition associée SetR::SetR(char *fichier,char *toReplace,char *by) { s_out = s_in = fichier; s_out += ".tmp"; tampon = new char [taille_tampon]; entree = new ifstream(fichier,ios::in); sortie = new ofstream(s_out.c_str(),ios::out); if ((*entree) && (*sortie)) { while (entree->getline(tampon,taille_tampon-1)) { *sortie << Remplace(tampon,toReplace,by) << endl; } } else { cout << "Problème d'ouverture fichier\n"; exit(1); } } // ---------------------------- // jeux de main, jeux de vilain // ---------------------------- int main(int argc, char *argv[]) { switch (argc) { // Deux arguments sur la ligne de commande: nom du programme & nom du fichier case 2: { SetR C(argv[1]); break; } // 4 arguments sur la ligne de commande: // Nom du programme // Nom du fichier a traiter // Chaîne a remplacer // Chaîne remplaçante case 4: { SetR C(argv[1],argv[2],argv[3]); break; } // Test par défaut .... dans le cas ou le nombre d'arguments est différent // de 2 ou 4. default: cerr << "\tSyntaxe par défaut: " << "\n\t\t" << argv[0] << " fichier_texte " << endl; cerr << "\n\tou bien avec l'un (ou les deux) des arguments optionnels, comme suit:" << endl; cerr << "\t\t" << argv[0] << " fichier_texte \"ChaineARemplacer\" \"ParChaine\"" << endl; cerr << "\t\t\t==> sortie dans le même fichier_texte\n"; break; } return 0; }