Bonsoir,
j'ai un programme qui sert à ouvrir deux fichiers textes et les lire.Il va remplir le contenu du premier fichier dans un vecteur de 2 dimensions, et fait quelques traitement avec le contenu du deuxième fichier.Mais, lorsque je lance le programme pour qu'il fait la lecture des deux fichiers avec le remplissage du premier tableau avec le premier fichier, il se bloque quand il est en train d'ouvrir le deuxième fichier, et il cesse de fonctionner, voilà mon code:
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
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
strstream ss;    
 ss << "codde" << region << ".txt";    
 std::string filess = ss.str();    
 ifstream fichierss(filess,ios::in); // ouverture du fichier  
 int nbrligne=0;  
 std::string contenu; 
// std::string contenu;  
if(fichierss)  // si l'ouverture a fonctionné    
{     
 // déclaration d'une chaîne qui contiendra la ligne lue    
 while(getline(fichierss, contenu))  // tant que l'on peut mettre la ligne dans "contenu"    
   {    
     // on met dans "contenu" la ligne    
nbrligne++;  
 }    
fichierss.close(); // fermeture du fichier  
 
}  
 
int  nbrcor;   
nbrcor=nbrligne;  
int dim_allouee = 0; // nombre d'éléments alloués avec succès sur la dimension 2    
double** sommet=0;    
sommet=new double * [nbrcor];    
//std::fill_n( sommet, nbrcor, static_cast<double*>( 0 ) );    
for ( dim_allouee = 0; dim_allouee < nbrcor; ++dim_allouee)    
 {    
 sommet[ dim_allouee ] = new double[ 3 ];    
  }    
ifstream fichiersopen(filess,ios::in); // ouverture du fichier  
int w=0;  
for(w=0;w<nbrcor;w++)  
{  
while( getline(fichiersopen, contenu))  
{  
int x=0;  
istringstream t(contenu);    
string mot;    
while ( std::getline( t, mot, ' ' ) )    
  {    double z;
z=10 *lexical_cast<double>(mot);
      sommet[w][x] =z;// ::atof(mot.c_str());    
 x=x+1;  
   } 
double* so=sommet[w];
/************ traitement à faire *********/
int nbp=polydata->GetNumberOfPoints();
int nbp1=nbp+1;
polydata->GetPoints()->InsertPoint(nbp1,so);
//polydata->GetPoints()->InsertNextPoint(so);
polydata->GetPoints()->Modified();
polydata->Modified();
polydata->Update();
cout<<"les sommets  sont: "<<sommet[w][0]<<" "<<sommet[w][1]<<" "<<sommet[w][2]<<"\n "<<endl;
/**********************************************/
}  
}  
 fichiersopen.close();// fermeture du fichier 
/************** pour le deuxièmes fichier  ****************/
strstream sface; 
 
 sface << "face" << region << ".txt";  
 
 std::string face = sface.str();   
 
 ifstream fichierface(face,ios::in); // ouverture du fichier  
 
 int nbrligneface=0; 
 
 std::string contenuface; 
 while(getline(fichierface, contenuface))    
   {    
 
	   istringstream t(contenuface); 
		   string mot;    
	while ( std::getline( t, face, ' ' ) )   
  {  
	  int z;
istringstream ( face )>>z;
int zz=z+nbpp;
	   points->InsertNextId(zz); 
   } 
int cell=polydata->GetPolys()->GetNumberOfCells();
polydata->GetPolys()->InsertNextCell(points);
polydata->BuildCells();
polydata->BuildLinks();
polydata->GetPolys()->Modified();
int cells=cell+1;
polydata->GetPolys()->UpdateCellCount(cells);      
nbrligneface++;  
 }    
fichierface.close(); // fermeture du fichier
Est ce que vous pouvez m'aider
Merci d'avance