ouverture d'un fichier à partir dune chaine de caractere

ouverture d'un fichier à partir dune chaine de caractere - C++ - Programmation

Marsh Posté le 13-06-2005 à 22:53:26    

Voilà mon problème:
 
Je souhaite ouvrir un fichier à partir d'un nom enregistré dans une chaine de caractere.  
voici mon algo  
 
 
typedef char CHAINE80 [81];
typedef char CHAINE400 [401];
 
void detail_vin(CHAINE80 nom_fichier)
{
   //Declarations
   ifstream filein;
   CHAINE400 line;
   int lgline;
   //Actions
   filein.open(nom_fichier);
   do
     {
      filein.getline(line,400) ;
      cout << line ;  
      lgline=strlen(line);
      cout << endl;
     }
   while (lgline>0);
   filein.close();
}
 
 
Le nom est stocké dans la CHAINE 80 nom_fichier. Jai fais des tests pour trouver d'où venait le problème. Apparement si le nom stocké dans la chaine est ecrit avec des " ", la procedure fonctionne correctement et ouvrir le bon fichier. Mais le nom que je stocke dans la chaine n'a pas de " ", et de ce fait ma procedure n'ouvre pas le bon fichier !!!
 
 Comment faire ?

Reply

Marsh Posté le 13-06-2005 à 22:53:26   

Reply

Marsh Posté le 13-06-2005 à 23:09:13    

beurk !
 
 
utilise std::string !
 
string line;
ifstream input(name.c_str());
 
if(!input) { erreur d'ouverture }
 
while(getline(input, line))
{
  traitement de la ligne
}
 
et voilà, rien d'autres à faire, le flux se ferme tout seul

Reply

Marsh Posté le 13-06-2005 à 23:20:59    

c'est bizarre je me sens largué...
ca ressemble à du charabia pour moi, je ne connais pas la fonction c_str(). J'ai beau cherché je ne vois pas vraiment comment utilise ce que tu me donnes là. Désolé mais je ne suis qu'un débutant, peut tu s'il te plait m'expliquer ce que je dois mettre dans input(name.c_str()) ?
 

Reply

Marsh Posté le 13-06-2005 à 23:27:49    

ben  
 
string name;
 
name = "fichier.txt";
 
 
et voilà

Reply

Marsh Posté le 13-06-2005 à 23:27:59    

ou alors faut-il ajouter une bibliotheque pour que ca marche? je crois comprendre que la fonction input est dans une bibliotheque mais je ne sais pas laquelle

Reply

Marsh Posté le 13-06-2005 à 23:30:17    

#include <iostream>
#include <string>
 
using namespace std;
 
 
et input n'est pas une fonction, c'est une variable

Reply

Marsh Posté le 14-06-2005 à 17:17:29    

merci Taz. Ca fonctionne enfin, mais mon problème ne venait pas de la procédure mais de ma chaine de caractere; je l'ai mal enregistré et javais un espace dans mon nom de fichier.

Reply

Marsh Posté le 14-06-2005 à 17:23:32    

et j'espère que t'as déjà ton code daubique du débuts.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed