Bonjour,
C'est probablement stupide ce que je vais vous demandez mais je n'arrive pas a utiliser cette fameuse fonction getline() malgré tout les forums qui en parlent, je reviens donc sur ce forum plutôt actif en espérant y trouver mon bonheur.

j'ai un fichier du type :

*** USER INFORMATION MESSAGE 4158 (DFMSA)
---- STATISTICS FOR SPARSE DECOMPOSITION OF DATA BLOCK SCRATCH FOLLOW
NUMBER OF NEGATIVE TERMS ON FACTOR DIAGONAL = 10
MAXIMUM RATIO OF MATRIX DIAGONAL TO FACTOR DIAGONAL = 2.4E+15 AT ROW NUMBER 13
%2.00000E-01 2 1 1.00E+00 1.56E-01 1.00E+00 1.000 0 1 0 5.97E-05 3.983E-02 1.28E-04 8.621E-03 306358 3 1.00 0 0 1 2

*** USER INFORMATION MESSAGE 4158 (DFMSA)
---- STATISTICS FOR SPARSE DECOMPOSITION OF DATA BLOCK SCRATCH FOLLOW
NUMBER OF NEGATIVE TERMS ON FACTOR DIAGONAL = 10
MAXIMUM RATIO OF MATRIX DIAGONAL TO FACTOR DIAGONAL = 2.4E+15 AT ROW NUMBER 13
%2.00000E-01 2 2 4.02E-01 1.57E-01 1.33E-01 0.801 0 1 0 5.32E-05 3.610E-02 1.09E-04 8.633E-03 306346 3 1.00 0 0 2 3

*** USER INFORMATION MESSAGE 4158 (DFMSA)
---- STATISTICS FOR SPARSE DECOMPOSITION OF DATA BLOCK SCRATCH FOLLOW


De ce fichier je souhaiterai extraire seulement les ligne commençant par un '%'.
Mon Code actuelle fonctionne très bien, mais est beaucoup trop long étant donné que je lis caractère par caractère, facile a savoir que sur un fichier de 10.000.000 de ligne ça prend énormément de temps et je dois privilégié la vitesse (pour l'expert de l'entreprise). Et j'en est déduis pouvoir accéléré ce temps en lisant seulement le premier caractère de chaque ligne. Svp Help je suis perdu avec cette fameuse fonction getline.

Code actuel :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
long int taille3, open;
unsigned long int itest ;
long int sauve;
String ouvrir3;
void sauver()
{
 
  unsigned long int i=0 ;
  AnsiString chaine="";
  char buffer;
  open=FileOpen(ouvrir3,fmOpenRead | fmShareDenyNone); // ouvrir3 a pour valeur le nom de mon ficheir récupéré grace a un OpenDialog
  FileSeek(open,0,2);
  taille3=GetFileSize((HANDLE)open,NULL);
  FileSeek(open,0,0);
  sauve=FileOpen("fichiercopie.f06",fmOpenWrite | fmShareDenyNone);
 
  while (i<=taille3)
  {
	FileRead(open,&buffer,sizeof(char));
		  if(buffer=='%')
		  {
						chaine=chaine+buffer;
						while(buffer!='\n')
						{
						FileRead(open,&buffer,sizeof(char));
						chaine=chaine+buffer;
						i++;
						}
						l=chaine.Length();
						FileWrite(sauve,chaine.c_str(),l);
						chaine="";
 
		   }
		  else
		  {
						if(sauve==-1)
						{
						sauve=FileCreate("fichiercopie.txt");
						}
						i++;
		  }
   }
	FileClose(sauve);
	FileClose(open);
}

Un grand MERCI d'avance au temps consacré.