Suppression d'une ligne dans un fichier .txt
Bonjour,
J'aimerais avoir votre aide pour la suppression dune ligne dans un fichier txt....je n'arrive pas à supprimer le fichier original pour le remplacer par mon fichier temporaire.
voici mon code pour la suppression d'une ligne
Code:
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 60 61 62 63 64 65 66 67 68 69 70 71
| void Supprimer_etud()
{
string MON_FICHIER("D:/MON_FICHIER_APPL/FICHIER.txt");
ifstream flux(MON_FICHIER.c_str());//fichier contenant la ligne a supp
string MON_TAMPON("D:/MON_FICHIER_APPL/TAMPON.txt");
ofstream flux1(MON_TAMPON.c_str(),ios::app); //fichier tamporaire pour garder le contenu du fichier original excepte de la ligne a supprimer
int pos;
if(flux)
{
bool test;
string ligne,copie_ligne,chaine;
cout<<"donner le matricule : ";getline(cin,chaine);
getline(cin,chaine);
test=Rechercher_etud(chaine,copie_ligne);
if(test)
{
if(flux1)
{
while(getline(flux,ligne))
{
if(ligne==copie_ligne)
{
cout<<"ligne retrouver suppression en cour "<<endl;
continue;
}
else
{
flux1.seekp(0,ios::end);
int j=flux1.tellp();
if(j==0)
{
EN_TETE(MON_FICHIER);
flux1<<ligne<<endl;
}
else
{
flux1<<ligne<<endl;
}
}
}
}
else{cout<<"erreure douverture du fichier flux1 "<<endl;}
}
else{cout<<"le matricule n\'existe pas "<<endl;}
}
else
{
cout<<endl<<"ERREURE DOUVERTURE DU FICHIER"<<endl;
}
remove("FICHIER.txt");
rename("TAMPON.txt","FICHIER.txt");
} |
suppression d'une ligne dans un fichier .txt enfin j'ai réussi voici le code
Code:
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 60 61 62 63 64 65 66 67 68 69 70 71 72
| /**#####################################################################################################
* \ la fonction supprimer permet la suppression des informations d'un étudiant dans le fichier inscription
* \ elle reçoit en paramètre le flux en mode écriture et en mode lecture dans lequel on doit supprimer
* \ VOID pas de valeur de retour
*/
void SUPPRIMER(ofstream &flux_1,ifstream &flux_2,string &chemin)
{
ofstream temp("tampon.txt");
ifstream temp1("tampon.txt");
info_etud e;
bool test=false;
string ligne,matri;
cin.ignore();
cout<<"DONNER LE MATRCULE DE LETUDIANT ";getline(cin,matri);
if(flux_2)
{
while(getline(flux_2,ligne))
{
if(ligne.find(matri)==1)
{
test=true;
}
}
flux_2.close();
}else {cout<<"erreure douverture du flux_2"<<endl;}
cin.ignore();
if(test)
{
flux_2.open(chemin.c_str());
while(getline(flux_2,ligne))
{
if(ligne.find(matri)==1)
{
cout<<"ligne retrouver suppression en cour "<<endl;
for(int i=0;i<100;i+=10)
{
if(i%10==0) cout<<char(16);
}
cout<<endl;
continue;
}
else
{
temp<<ligne<<endl;
}
}
}
else{cout<<"LE NUMERO MATRICULE SAISI N\'EXISTE PAS "<<endl;}
flux_2.close();
temp.close();
if(true)
{
ofstream flux(chemin.c_str());
string copie;
while(getline(temp1,copie))
{
flux<<copie<<endl;
}
flux.close();
temp1.close();
remove("tampon.txt");
cout<<endl<<"suppression effectuer avec succee "<<endl;
}
} |