Datei löschen mit manueller Pfadangabe



  • Hallo zusammen!

    Zuerst mal möcht ich euch allen ein gutes neues Jahr wünschen!

    Nun zu meiner Frage:

    Wie kann ich in C++ eine Datei löschen, wobei der Anwender selbst den Pfad der zu löschenden Datei eingibt?

    Bisher hab ichs so versucht:

    string name, pfad, datei;
    
    name = "text";
    
    cout << "Bitte Pfad angeben: ";
    cin >> pfad;
    
    datei = pfad + name + ".txt";
    
    remove(datei);
    
    getchar();
    getchar();
    

    Leider bekomm ich das ganze erst gar nicht übersetzt!

    Wenn ich bereits im Quellcode in den Klammern den vollständigen Pfad angebe wird mir meine Datei allerdings auch nicht gelöscht!

    Kann mir da evtl. jemand weiterhelfen???

    Schon mal vielen Dank im Voraus



  • remove() ist afaik eine C-Funktion, kann also mit std::string nicht viel anfangen - die Lösung heißt c_str() .

    Und warum die Datei trotzdem nicht gelöscht wird, kann ich nicht sagen - möglicherweise hast du dich ja beim Dateinamen verschrieben (hast du mal den Rückgabewert von remove() überprüft - man: remove ist so freundlich, Fehler zurückzugeben).



  • CStoll schrieb:

    remove() ist afaik eine C-Funktion, kann also mit std::string nicht viel anfangen - die Lösung heißt c_str() .

    Vielen Dank schon mal...

    Wenn du mir jetzt noch sagen könntest wie das dann im Quellcode aussehen sollte wär ich Dir noch mehr dankbar



  • Hab ich doch gesagt:

    remove(datei.c_str());
    


  • Is OK!

    Habs nur falsch verstanden!
    Werds so mal ausprobieren

    Danke



  • CStoll schrieb:

    remove(datei.c_str());
    

    Funktioniert bestens!

    Jetzt hab ich nur noch das Problem mit der Pfadangabe!
    Hab den Pfad mehrmals überprüft und hab alles richtig geschrieben

    Trotzdem wird die Datei nicht gelöscht; ohne Pfadangabe funktioniert alles bestens!



  • Hast du einen absoluten oder relativen Pfad angegeben? Im letzteren Fall kann es sein, daß du im falschen Verzeichnis gelandet bist. (oder du hast das '\' am Ende des Pfades vergessen)

    (wie ich schon oben sagte - schau dir mal den Rückgabewert von remove() (und im Zweifelsfall auch errno) an)


Anmelden zum Antworten