(while) Schleife Problem



  • Hallo, ich habe die folgende Idee, weiss aber nicht wie ich den Schleifen Header und erneute überprüfung hin bekommen soll. Es geht darum das eine Datai in ein Verzeichnis kopiert wird. Nun soll sie natürlich nicht die vorhandene überschreiben sondern einfach den Namen ändern:

    int i=1;    
    String Dateiname = "datei.xyz";
    
    while (Dateiname schon vorhanden)
     {
      i++;
      String = i; // umwandeln in String
      Dateiname = String+Dateiname;
     }
    

    Das was ich brauche ist also etwas das unten den Dateinamen ändern und zurück in die Schleifenabrage packt.
    Ich habe schon ein paar sachen probiert aber entweder bin ich in einer endlosschleife oder er geht nicht rein.
    Hat jemand eine Idee wie ich da weiter kommen kann ?
    Danke schonmal.



  • Hallo,

    ich hab das ganze mal gleich in eine Funktion gepackt. Sie liefert eine Referenz auf einen string zurück, in dem der nächste gültige Dateiname steht. man kann sie also gleich mit

    std::string dateiname="Test";
        std::ofstream datei( check_file(dateiname).c_str() )
    

    nutzen.

    std::string &check_file(std::string &dateiname){
    
      int wert= 1;
      int i=1;
      static std::string dateinameneu;
      dateinameneu = dateiname;
    
      char *buf = new char[dateiname.length()+10];
      std::ifstream datei;
      while(wert){
          datei.open( dateinameneu.c_str());
          if (datei.is_open()) {
               datei.close();
               sprintf(buf,"%d%s", i++ ,dateiname.c_str());
               dateinameneu = buf;
           }
            else {
              wert=0;
              datei.close();
              }
      }
      return dateinameneu;
    }
    

    grüße Con@n

    [ Dieser Beitrag wurde am 06.06.2003 um 01:27 Uhr von Con@n editiert. ]

    [ Dieser Beitrag wurde am 06.06.2003 um 01:28 Uhr von Con@n editiert. ]


Anmelden zum Antworten