pb dans la lecture consécutive de deux fichiers txt
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:
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 :cry:
Merci d'avance