Ouvrir le nom d'un fichier dans une chaîne de caractères

Signaler
Messages postés
21
Date d'inscription
dimanche 15 novembre 2009
Statut
Membre
Dernière intervention
1 mai 2010
-
Messages postés
21
Date d'inscription
dimanche 15 novembre 2009
Statut
Membre
Dernière intervention
1 mai 2010
-
Bonjour à tous,

J'ai un soucis dans le développement d'un programme.
En effet, j'ouvre tout d'abord un fichier.txt qui contient toute une liste de noms d'autres fichiers.

La première ouverture se passe bien, mais ensuite pour lire toute cette liste ligne par ligne j'utilise la fonction getline. Celle-ci stock le nom du premier fichier dans un string.
Problème : Je n'arrive pas à ouvrir ce fichier!

Voici le code:

#include 
#include <string> 
#include <cstring>
#include <fstream>


using namespace std;
const int MAX_SIZE_URL=50;
int main ()
{
    
    
    char T[MAX_SIZE_URL];
    
    
    ifstream file;
    file.open("stl/listepages.txt"); // j'ouvre cette fameuse liste

    if ( file ) // si le fichier s'ouvre
    {
      
       (file.getline(T, MAX_SIZE_URL)); 
       
       string mon_fichier = T;
       ifstream fichier;
       fichier.open(mon_fichier.c_str());
      
       if (fichier)
       {
                   cout << "marche";
       }
       else cout << "ne s'ouvre pas";
   
   }else cout << "ne s'ouvre pas";
   
   system("pause");

} 



J'ai déjà réalisé plusieurs recherches, et malheureusement aucune n'a été fructueuse!

Un grand merci à celui qui pourra m'aider
PS:Je travaille avec dev c++

9 réponses

Messages postés
1111
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
5 mai 2021
4
difficile de voir, essaie d'ajouter des traces, style
cout << "ne s'ouvre pas " << mon_fichier.c_str()
Messages postés
21
Date d'inscription
dimanche 15 novembre 2009
Statut
Membre
Dernière intervention
1 mai 2010

Alors, j'ai testé ce que contenait mon_fichier.c_str() .. et il contient bien le nom du fichier qui apparait à la première ligne de mon fichier liste.txt.

le problème se situe vraiment à l'ouverture du fichier, donc ici:


(file.getline(T, MAX_SIZE_URL)); 
             
       
       string mon_fichier=T;
       ifstream fichier;
       fichier.open(mon_fichier.c_str());



Mais j'essaye plusieurs choses et toujours rien
Messages postés
1111
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
5 mai 2021
4
pourquoi tu ne fais pas directement :
fichier.open(T); ?
Messages postés
1111
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
5 mai 2021
4
autre question bête !!

tu es sûre de l'emplacement de ton fichier ? (liste.txt) par rapport à l'exécution de ton programme.
liste est où ? dans le répertoire stl ou au dessus ?
Messages postés
21
Date d'inscription
dimanche 15 novembre 2009
Statut
Membre
Dernière intervention
1 mai 2010

En fait , listepages.txt se trouve dans le dossier de dev c++ et il se situe dans le fichier stl donc "stl/listepages.txt".

Lui il s'ouvre sans problème et je peux travailler dedans. Et moi je veux ouvrir maintenant le premier fichier qui se trouve dans listepages.txt grâce à son nom. Mais maintenant que j'y pense ce fichier se trouve dans stl/...
et peut-être qu'il cherche dans stl/listepages.txt alors ?
Messages postés
180
Date d'inscription
mercredi 22 décembre 2004
Statut
Membre
Dernière intervention
16 août 2012
2
Salut,
dans ce type de cas, il faut préférer la fonction getline globale, qui simplifie beaucoup ton code :

#include 
#include <string> 
#include <fstream>

int main ()
{
std::ifstream file( "stl/listepages.txt" );
if ( file )
{
std::string mon_fichier ;
while ( std::getline( file , mon_fichier ) )
{
std::ifstream fichier( mon_fichier.c_str() ) ;
if ( fichier )
{
std::cout << mon_fichier << " marche" << std::endl ;
}
else
{
std::cout << mon_fichier << "ne s'ouvre pas" << std::endl ;
}
}
}   
else
{
std::cout << "stl/listepages.txt ne s'ouvre pas" << std::endl ;
}
} 



Messages postés
1111
Date d'inscription
mercredi 15 juin 2011
Statut
Membre
Dernière intervention
5 mai 2021
4
bah voilà,
ton prog cherche dans le répertoire courant alors que ton fichier est dans stl !!!
C'est ca ?
On a trouvé le souci ! :)
Messages postés
21
Date d'inscription
dimanche 15 novembre 2009
Statut
Membre
Dernière intervention
1 mai 2010

Comment pourrais je faire pour ouvrir le nom contenu dans T alors ?

la première ouverture se fait par "stl/listespages.txt" ==> Marche correctement

et le fichier dont le nom est contenu dans T se trouve dans "stl".
Comment l'ouvrir ?

Merci pour votre aide!!
Messages postés
21
Date d'inscription
dimanche 15 novembre 2009
Statut
Membre
Dernière intervention
1 mai 2010

C'est bon les gars, j'ai extracté tous les fichiers dehors de stl comme ça plus de soucis!

Merci à vous fregolo52, et lucky92 pour votre aide!