Soyez le premier à donner votre avis sur cette source.
Snippet vu 4 930 fois - Téléchargée 30 fois
#include <stdio.h> #include <stdlib.h> #include <fstream> #include <string> #include <windows.h> using namespace std; int nombre_lignes(int indice,LPCTSTR f){//retourne le nombre de lignes avant le mot recherche ifstream fic(f); if(!fic){ cerr<<"le fichier ne peut pas etre ouvert."<<endl; exit(EXIT_FAILURE); } char ch; unsigned int nb_char =0; string texte; int nb_lignes_debut=0; while(fic.get(ch)&& nb_char <=indice){ texte +=ch;nb_char++; if(ch=='\n'){++nb_lignes_debut;} } return(nb_lignes_debut); } int chercher(LPCTSTR f,string expr){//retourne l'endroit où on va ecrire dans le fichier ifstream fic(f); if(!fic){ cerr<<"le fichier ne peut pas etre ouvert."<<endl; exit(EXIT_FAILURE); } char ch; string texte; int nb_lignes=1;//, nb de lignes du fichier, =1 a cause du eof while(fic.get(ch)){ texte +=ch; if(ch=='\n'){++nb_lignes;} } int indice; indice=texte.find(expr); char *debut=new char(indice+1); fic.read(debut,indice); int nb_lignes_debut=nombre_lignes(indice,f); return (indice+nb_lignes_debut+expr.length()+1); } void ajout(string s,LPCTSTR f,string expr){//ecrit dans le fichier a l'emplacement desire fstream fic(f,ios::in|ios::out); if(!fic){ cerr<<"le fichier ne peut pas etre ouvert."<<endl; exit(EXIT_FAILURE); } int i; i=chercher(f,expr); fic.flush(); fic.seekg(i,ios::beg); fic<<s; fic.flush(); fic.close(); }
Si tu veux utiliser des données dans un fichier, utilise des fichiers ini ou gère les comme tels
aide : http://www.cppfrance.com/code.aspx?ID=18784
magicalement, @+
fic.flush();
fic.close(); inutile, ca flush et ca close tout seul lors de la destruction
si tu ne flush pas dans un but precis, ca fou en l'air les performance (a quoi ca sert les e/s bufferisée ? )
sinon mem remarque que BruNews, fait attention a ne pas tout melanger
que vient faire #include <windows.h> ici ?
Les flux sont obsoletes sur Windows qui a une API complete pour les fichiers et le reste.
Faut faire un code coherent, soit flux et reflux, soit Windows.
ciao...
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.