Partage
  • Partager sur Facebook
  • Partager sur Twitter

Nommer son fichier comme on veut

    10 juillet 2007 à 12:49:10

    Bonjour.
    J'ai lu le tuto sur Lecture et écriture dans les fichiers et j'aimerai savoir si on peut au début, nommer son fichier(avec un cin), après l'executable le crée et peut ecrire et lire dedans.
    :euh:
    #include <iostream>
    #include <string>
    #include <fstream>

    using namespace std;

    int main()
    {
        string nomfichier = "";// si la on nomme notre fichier
        cin >> nomfichier;
            ofstream fichier;
            fichier.open( << "test.txt", ios::out|ios::trunc);        if(fichier)//que peut-etre on

    // déclare la variable "nomfichier
            {
                    string nom = "";
                    int age = 0;
                    cout << "Entrez votre age:" << endl;
                    cin >> age;
                    cout << "Entrez votre nom:" << endl;
                    cin >> nom;
                    fichier << "Bonjour, " << nom << ". Vous avez " << age << " ans.";
            }
            else
            {
                    cout << "Erreur !" << endl;
                    return 1;
            }

            fichier.close();
            return 0;
    }

    Est-ce possble?
    (J'espère qu'on m'a compris) :lol:
    • Partager sur Facebook
    • Partager sur Twitter
      10 juillet 2007 à 13:14:20

      oui bien sûr que c'est possible.

      Je vais pas te donner le code car je suis sûr que tu sais le faire. Mais je te donne les étapes à réaliser.

      1) récupérer le nom du fichier tapé par l'utilisateur et le mettre dans une chaîne (string).
      2) Convertir la chaîne de caractère en chaîne de type C. MaChaineTypeC = MaString.c_str()
      3) Passer la chaîne de type C a la fonction open

      Et voilà :)

      • Partager sur Facebook
      • Partager sur Twitter
      Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
        10 juillet 2007 à 13:21:00

        Il peut aussi utiliser fstream donc il a pas besoin de transformer la chaine en char(je crois)

        Apres sur ton code, tu créé un objet ofstream. Mais avec un objet comme ça, on peut seulement ecrire. Pour pouvoir lire ET écrire il faudra un objet de type fstream

        Ca fera alors :
        fichier.open(chemin, ios::in | ios::out | ios::trunk);
        • Partager sur Facebook
        • Partager sur Twitter
          10 juillet 2007 à 13:35:58

          void open ( const char * filename,
                      ios_base::openmode mode = ios_base::in | ios_base::out );


          Si il faut transformer en char*
          • Partager sur Facebook
          • Partager sur Twitter
          Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.
          Anonyme
            10 juillet 2007 à 13:41:20

            Salut,

            tu as lu mon tuto! c'est bien, mais je t'invites à le relire : ce que tu demandes, je l'ai mis à la fin de la première partie !

            Xav57
            • Partager sur Facebook
            • Partager sur Twitter
              10 juillet 2007 à 15:02:52

              merci
              Edit

              Un dernier problème:
              #include <iostream>
              #include <string>
              #include <fstream>

              using namespace std;

              int main()
              {
                  system ("Color F0");
                       string mon_fichier = "";
                       cin >> mon_fichier;
                   ifstream fichier(mon_fichier.c_str(), ios::out|ios::trunc);
                   if(fichier)
                      {
                              string nom = "";
                              int age = 0;
                              cout << "Entrez votre age:" << endl;
                              cin >> age;
                              cout << "Entrez votre nom:" << endl;
                              cin >> nom;
                              fichier << "Bonjour, " << nom << ". Vous avez " << age << " ans.";//Erreur
                      }
                      else
                      {
                              cout << "Erreur !" << endl;
                              return 1;
                      }

                      fichier.close();
                      return 0;
              }

              Ou suis-je trop ZERO?
              • Partager sur Facebook
              • Partager sur Twitter
                10 juillet 2007 à 15:44:00

                Citation : Nanoc

                void open ( const char * filename,
                            ios_base::openmode mode = ios_base::in | ios_base::out );



                Si il faut transformer en char*


                Alors la je te reprend... la fonction demande des const char *... et la méthode c_str() de string retourne un const char * alors pas besoin de déclarer de chaine (tableau) type C.

                que ce soit ofstream, ifstream ou fstream il n'y a pas vraiment de différence tout dépend du mode d'ouverture de base
                fstream fs;
                fs.open( chemin.c_str() );


                Pour moi 2
                ifstream fichier(mon_fichier.c_str(), ios::out|ios::trunc);


                c'est un peu ironique tu trouves pas?

                ifstream = "Input File Stream" (Flux de fichier en entrée) ouvert en ios::out...

                je ne sais pas s'il y a un réel différence mais moi j'utiliserai un ofstream ou fstream
                • Partager sur Facebook
                • Partager sur Twitter
                  10 juillet 2007 à 15:50:25

                  Je n'ai jamais dit de déclarer une chaine de type C, j'ai juste dit de convertir en chaine de type C
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Co-auteur du cours de C++. ||| Posez vos questions sur le forum ||| Me contacter.

                  Nommer son fichier comme on veut

                  × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                  × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                  • Editeur
                  • Markdown