Datei in Ordner kopieren



  • Hallo wie kann ich eine bestimmte Datei in einen Ordner kopieren ?

    Bei cin>>datei; geben ich z.b ein datei.txt
    Bei cin>>laufwerk; gebe ich ein c:\ordner\

    Nun soll die datei.txt in den c:\ordner\ kopiert werden aber es funktioniert nicht.

    Es funktioniert nur wenn ich z.b. bei cin>>laufwerk; eingebe c:\ordner\datei.txt

    Wie kann man kopieren ohne da einen Name für Festlegen zu müssen ?

    Die Datei soll einfach nur in den ordner kopiert werden hat da wer eine Idee ?

    #include <iostream>
    #include <fstream>
    #include <vcl>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
    string datei;
    string laufwerk;
    
    cout<<"Zu kopierende Datei eingeben: ";
    cin>>datei;
    
    cout<<"Laufwerk eingeben: ";
    cin>>laufwerk;
    
    CopyFile( datei.c_str(), laufwerk.c_str() ,0);
    
    return 0;
    }
    


  • Du musst den Zieldateinamen auch mit angeben.

    CopyFile( datei.c_str(), (laufwerk+datei).c_str() ,0);
    

    Setzt aber voraus, dass datei kein Verzeichnis beinhaltet.


  • Administrator

    a. CopyFile kommt hier aus der VCL. Falsches Stockwerk, ist ein paar weiter oben:
    http://www.c-plusplus.net/forum/viewforum-var-f-is-2.html

    b. Ich bin mir ziemlich sicher, obwohl ich die Funktion von VCL nicht kenne, dass CopyFile folgendes erwartet:
    1. Parameter: Vollständiger oder relativer Pfad zum File, welches kopiert werden soll.
    2. Parameter: Vollständiger oder relativer Pfad zum File, wo es hinkopiert werden soll.
    3. Parameter: Wahrscheinlich eine bool Variable, ob das File beim Zielpfad überschrieben werden soll, wenn vorhanden.

    Wichtig ist, dass Parameter 1 und 2 beide einen Pfad zu einem File erwarten. Ein Ordner reicht nicht.

    Übrigens, da Pfadangaben Leerzeichen enthalten können, solltest du dir mal die Funktion std::getline anschauen:
    http://www.cplusplus.com/reference/string/getline/

    Grüssli



  • Dravere schrieb:

    a. CopyFile kommt hier aus der VCL. Falsches Stockwerk, ist ein paar weiter oben:

    Nein, das ist WinAPI. 🙂


  • Administrator

    Braunstein schrieb:

    Dravere schrieb:

    a. CopyFile kommt hier aus der VCL. Falsches Stockwerk, ist ein paar weiter oben:

    Nein, das ist WinAPI. 🙂

    Keine Ahnung woher VCL es nimmt, kann sein, dass sie CopyFile einfach durchreichen. Aber ich sehe nirgendwo ein #include <windows.h> sondern nur ein #include <vcl> . Daher bin ich davon ausgegangen, dass CopyFile hier womöglich aus der VCL stammt.

    Grüssli



  • vcl.h inkludiert normalerweise die windows.h. Deswegen wird kann die Funktion verwendet werden, sie stammt aber aus der WinAPI.
    http://msdn.microsoft.com/en-us/library/aa363851.aspx
    #include <vcl> ist sowieso falsch, wenn schon dann #include <vcl.h>



  • #include <vcl>
    funktioniert [ getestet mit Borland C++ Builder 6 bei RAD Studios 2007 da ging es glaub ich nur mit #include <windows.h> ] aber auch wo ist denn da der untschied zwischen:

    #include <vcl>

    und

    #include <vcl.h>


Anmelden zum Antworten