Nom de fichier de sortie dynamique

saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006 - 29 avril 2004 à 01:52
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006 - 30 avril 2004 à 00:22
Bonjours a tous!

Voila ma fonction :
void creer_carnet_vide( )
{
    string nom_carnet;
    cout << "Entrez le nom du carnet: ";
    cin >> nom_carnet;
    ofstream sortie;
    sortie.open(nom_carnet);
    sortie << "eafb";
    sortie.close();
}

Mais apparemment, sortie.open(nom_carnet) ça fonctionne pas.
Donc je vous demande votre aide ;)
Merci d'avance...

12 réponses

ymca2003 Messages postés 2070 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 3 juillet 2006 7
29 avril 2004 à 02:15
peut-être
sortie.open(nom_carnet.c_str());
0
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006
29 avril 2004 à 02:28
Merci pour ton aide.
Mais peux tu m'expliquer a quoi sert la fonction membre c_str?
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
29 avril 2004 à 07:22
ca converti ta string en const char * (C-style string)

pourquoi tu fait

ofstream sortie;
sortie.open(nom_carnet.c_str()); ?

ouvre direct avec le constructeur

ofstream sortie(nom_carnet.c_str());
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
29 avril 2004 à 07:23
et sortie.close() n'est pas necessaire
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006
29 avril 2004 à 10:44
Merci encore pour ton aide.

Sans vouloir t'embeter, mais je suis debutant en C++.
Je voulais savoir pourquoi le fichier de sortie n'est pas creer.
En faite, je voudrais creer un fihier de sortie qui contient des information sur un carnet de contact; puis pouvoir le relire pour en extraire les informations.
Cela fesant partie d'un projet je reste limiter a l'ulisation de fstream (et oui pas le droit a une librairie file par exemple vu qu'on est pas censer la connaitre).
Merci encore
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
29 avril 2004 à 20:44
ben en c++ ya fstream et puis c'est tout, mais je vois pas en quoi c'est limitant

le fichier de sortie n'est pas cree?

sinon pour ce genre de programme, ton carnet d'adresse c'est un agregat (struct ou class)?

enfin quoi qu'il en soit tu n'aura aucun pb a faire ca en c++ par rapport au c, bien au contraire
0
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006
29 avril 2004 à 23:50
Merci pour tes réponses

Voila mon fichier .h au complet :
#include<list>
#include<string>
class fiche
{
 protected:
  string nom, adresse, num_tel_fixe, www;
 public:
  fiche(string="",string="",string="",string="");
  void modifier();
  bool operator == (fiche) const;
  bool operator <  (fiche) const;
};

class personne: public fiche
{
 protected:
  string num_portable, email;
 public:
  personne(string="",string="",string="",string="",string="",string="");
  void modifier();
};

class entreprise: public fiche
{
 private:
  string activite, fax;
 public:
  entreprise(string="",string="",string="",string="",string="",string="");
  void modifier();
  friend ostream& operator << (ostream&, entreprise&);
  friend istream& operator >> (istream&, entreprise&);
};

class ami: public personne
{
 private:
  string naissance;
 public:
  ami(string="",string="",string="",string="",string="",string="",string="");
  void modifier();
  friend ostream& operator << (ostream&, ami&);
  friend istream& operator >> (istream&, ami&);
};

class famille: public personne
{
 private:
  string naissance;
 public:
  famille(string="",string="",string="",string="",string="",string="",string="");
  void modifier();
  friend ostream& operator << (ostream&, famille&);
  friend istream& operator >> (istream&, famille&);
};

class boulot: public personne
{
 private:
  string fonction;
 public:
  boulot(string="",string="",string="",string="",string="",string="",string="");
  void modifier();
  friend ostream& operator << (ostream&, boulot&);
  friend istream& operator >> (istream&, boulot&);
};

// ==========================================================================

class carnet
{
 private:
  list<entreprise> elem_entreprise;
  list elem_ami;
  list<famille> elem_famille;
  list elem_boulot;
 public:
  void modifier(string);  // modification d'une fiche dont le nom est donne
  void rechercher(string);  // rechercher et afficher une fiche dont le nom est donne
  void reset();        // remettre a zero
  void operator ++(int);     // ajouter une fiche, notation postfixee
  void operator -(string);  // retirer la fiche dont le nom est donne
  void operator +(carnet&); // fusionner avec un carnet
  friend ostream& operator << (ostream&, carnet&);
  friend istream& operator >> (istream&, carnet&);
};

Comme tu peux le constater, il s'agit d'une class.
Et oui, lors de l'execution du programme, le fichier de sortie n'est pas creer. ?!:.?
Juste pour information, j'utilise DevC++ avec les librairie fournit avec.
0
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006
29 avril 2004 à 23:52
Une otre question, le fichier de sortie est creer a l'endroit où se trouve le programme?
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
29 avril 2004 à 23:58
oui

ta le code qui correspond à l'enregistrement parce que la je vois pas ?
0
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006
30 avril 2004 à 00:02
Voila le code:
void creer_carnet_vide( )
{
    string nom_carnet;
    cout << "Entrez le nom du carnet: ";
    cin >> nom_carnet;
    ofstream sortie;
    sortie.open(nom_carnet.c_str());
    sortie << "eafb";
    sortie.close();
}
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
30 avril 2004 à 00:10
ben ya aucun pb, ca marche (test cette fonction seulee tu verra)

le pb doit venir d'ailleur
0
saturne_1606 Messages postés 29 Date d'inscription mardi 23 mars 2004 Statut Membre Dernière intervention 23 juin 2006
30 avril 2004 à 00:22
Merci bcp pour ton aide.
Effectivement la fonction marche.
Je demande comment g pu bloquer sur ça.
Pour t'expliquer, en fait je lancait l'execution du programme directement sous DevC++ apres l'avoir compiler, et là pas de fichiers creer.
Maintenant, en le lancant independemment le programme, cela fonctionne parfaitement.

Merci au moins j'aurais appris la fonction membre c_str() qui me sera bien util.

Encore merci a toi et longue vie a cet excellent forum et ceux qui y contribue comme toi.
0
Rejoignez-nous