Partage
  • Partager sur Facebook
  • Partager sur Twitter

Deplacer fichier selon variable

Sujet résolu
    30 septembre 2008 à 20:22:14

    Bonsoir,
    Voilà, j'aimerais, pour mon programme, pouvoir déplacer un fichier, et l'appeler en fonction de la valeur d'une variable, je m'explique, exemple :
    MoveFile("C:\\test.txt","C:\\titoul\\fichier1.txt");
    

    En fait, j'aimerais pouvoir mettre, à la place du "1" à la fin de fichier, une variable "nombre", par exemple, qui contiendrait une valeur qui s'incrémente à chaque passage dans une boucle.
    Donc en gros, j'aimerais savoir comment utiliser les variables dans une commande de ce type, merci d'avance.
    • Partager sur Facebook
    • Partager sur Twitter
      30 septembre 2008 à 20:25:22

      ben tu crées un string à partir d'un int que tu incréments à chaque tour de boucle c'est pas plus difficile
      • Partager sur Facebook
      • Partager sur Twitter
        30 septembre 2008 à 20:28:57

        Citation : icare14

        ben tu crées un string à partir d'un int que tu incréments à chaque tour de boucle c'est pas plus difficile


        Euh ok je vois mais, comment utiliser un string dans la commande movefile ?
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          30 septembre 2008 à 20:33:26

          Je connais pas cette fonction, mais si sa signature est :
          bool MoveFile(const char*, const char*);
          

          Alors tu peux utiliser une std::string et la convertir en char* avec std::string::c_str.
          • Partager sur Facebook
          • Partager sur Twitter
            1 octobre 2008 à 12:45:04

            Citation : Hiura

            Je connais pas cette fonction, mais si sa signature est :

            bool MoveFile(const char*, const char*);
            


            Alors tu peux utiliser une std::string et la convertir en char* avec std::string::c_str.


            Merci pour ton aide mais, concrètement, je ne sais pas comment réaliser cette conversion ni comment utiliser cette fonction.
            J'accepte volontiers un petit exemple ^^
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              1 octobre 2008 à 13:33:51

              Je ne connais pas cette fonction, mais à mon avis ça devrait donner :

              string fichier1="C:\\fichier1.txt";
              string fichier2="C:\\dossier\\fichier10.txt"
              
              if(MoveFile(fichier1.c_str(), fichier2.c_str()))
                  cout<<"Copie reussie"<<endl;
              
              else
                  cout<<"Copie Non reussie"<<endl;
              
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                1 octobre 2008 à 15:17:10

                Citation : Snipy

                Citation : Hiura

                Je connais pas cette fonction, mais si sa signature est :

                bool MoveFile(const char*, const char*);
                


                Alors tu peux utiliser une std::string et la convertir en char* avec std::string::c_str.


                Merci pour ton aide mais, concrètement, je ne sais pas comment réaliser cette conversion ni comment utiliser cette fonction.
                J'accepte volontiers un petit exemple ^^


                L'exemple ci-dessus est correcte si using std::string; ou using namespace std; après un include de <string>.

                Mais pour plus d'info sur cette fonction, je te renvois vers le tuto de m@teo21 ainsi que la documentation (cf ma signature).
                • Partager sur Facebook
                • Partager sur Twitter
                  1 octobre 2008 à 16:34:17

                  Merci pour votre aide, cependant, est-il possible d'incrémenter le "10" qui se trouve dans le string "fichier2" ?
                  J'ai fais plusieurs essais mais je n'y arrive pas, je vais faire un tour dans les liens que m'a suggéré Hiura, en espérant que ça m'aidera.

                  Edit : Après avoir lu ce qui concernait l'utilisation de ces fonctions, je me pose encore la question suivante : "Comment intégrer un int à l'intérieur d'un string ?"
                  Merci encore pour votre aide !

                  Re-edit : Plus clairement, j'aimerais faire une sorte de <code type="cpp"string fichiere2="C:\\dossier\\fichier" << nombre << ".txt";</code>.
                  Si quelqu'un a une solution :/
                  Merci encore.
                  • Partager sur Facebook
                  • Partager sur Twitter
                  Anonyme
                    1 octobre 2008 à 16:45:25

                    Dans la faq de developper tu trouveras un article sur la conversion de nombre en chaine avec les std::stringstream. Tout y est détailé.
                    • Partager sur Facebook
                    • Partager sur Twitter
                      1 octobre 2008 à 16:58:14

                      Citation : Hiura

                      Dans la faq de developper tu trouveras un article sur la conversion de nombre en chaine avec les std::stringstream. Tout y est détailé.


                      Voilà ce que j'ai fais à partir de ce que j'y ai trouvé :
                      int nombre = 3;
                                              string fichiere1="C:\\fichier1.txt";
                                              string fichiere2="C:\\dossier\\fichier";
                                              std::ostringstream oss;
                                              oss << nombre;
                                              std::string result = oss.str();
                                              string fichiere4=".txt";
                                              string fichiere5;
                                              fichiere5 = fichiere2 + oss + fichiere4;
                                              MoveFile(fichiere1.c_str(), fichiere5.c_str());
                      

                      En fait, si je met "fichiere5 = fichiere2 + fichiere4;", la compilation marche, mais là, dès que je met "oss", ça ne marche pas, je n'arrive pas à utiliser correctement cette méthode d'inclusion d'int dans un string :/

                      Edit : Il semblerait que ça marche avec fichiere5 = fichiere2 + oss.str() + fichiere4;
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        1 octobre 2008 à 17:08:32

                        Oui c'est juste. On aurait aussi pu faire :

                        #include <string>
                        #include <sstream>
                        
                        void f(void) {
                            const int nombre(3);
                            const std::string& from("C:\\fichier1.txt");
                            std::stringstream ss;
                            ss << "C:\\dossier\\fichier" << nombre << ".txt";
                            MoveFile(from.c_str(), ss.str().c_str());
                        }
                        

                        Plus compacte, légèrement plus performant. Mais ta solution est correcte quand même. ;)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        Deplacer fichier selon variable

                        × 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