Datei umbenennen
-
Hallo ich hätte nocheinmal eine Frage.
Also ich will jetzt in dem Programm noch eine Datei umbenennen deren Namen man erst eingeben muss.#include <iostream> #include <string> #include <stdio.h> using namespace std; int main() { string name,name2; cout<<"Geben Sie den Namen der alten Datei ein: \n"; cin>>name; cout<<"Geben Sie jetzt den neuen Namen ein: \n"; cin>>name2; rename (name,name2); }Das ist der Code. Ich bekomme folgende Fehlermeldung:
Fehler 4 error C2664: 'rename': Konvertierung des Parameters 1 von 'std::string' in 'const char *' nicht möglichIch weis das ich name oben als string deklariert habe aber ich weis jetzt trotzdem nicht wie ich das Problem lösen kann da ich noch relativ neu auf dem Gebiet bin.
Die Suche und Google habe ich auch schon benutzt aber nichts gefunden :(.
Über Hilfe bin ich sehr dankbar.
-
.... name.c_str() ....
-
Danke das ist wirklich ein super Forum
.
Man braucht nie lange auf eine Antwort warten :D.
-
Bitte statt <xxx.h> <cxxx> bei C-Standard Headern nutzen!
=> <stdio.h> <cstdio>
-
(D)Evil schrieb:
Bitte statt <xxx.h> <cxxx> bei C-Standard Headern nutzen!
=> <stdio.h> <cstdio>Bringt das irgendwelche Vorteile und warum soll man das so machen??
Ich hätte auch noch eine andere Frage und zwar wollte ich jetzt noch eine Datei auf dem Desktop umbenennen.
rename(("C:\\Dokumente und Einstellungen\\User\\Desktop\\") + name.c_str(),("C:\\Dokumente und Einstellungen\\User\\Desktop\\") + name2.c_str());So der Fehler ist dieser hier:
Fehler 2 error C2110: '+': Zwei Zeiger können nicht addiert werdenIch hoffe ihr könnt mir nochmal helfen.
-
rename( string("C:\\Dokumente und Einstellungen\\User\\Desktop\\") + name, string("C:\\Dokumente und Einstellungen\\User\\Desktop\\") + name2 );
-
Danke schonmal aber ich weis jetzt nicht ob ich das nicht genau verstanden habe aber aufjedenfall kommt jetzt dieser Fehler:
Fehler 2 error C2664: 'rename': Konvertierung des Parameters 1 von 'std::basic_string<_Elem,_Traits,_Ax>' in 'const char *' nicht möglichUnd dann hätte ich auch nich eine etwas denke ich mal dumme Frage und zwar wie kann ich überhaupt eine .exe erstellen um sie von irgendwo anders zu starten.
Danke schonmal wieder für die Hilfe
.
-
rename( (string("C:\\Dokumente und Einstellungen\\User\\Desktop\\")+name).c_str(), (string("C:\\Dokumente und Einstellungen\\User\\Desktop\\")+name2).c_str() );oder
string from = string("C:\\Dokumente und Einstellungen\\User\\Desktop\\") + name; string to = string("C:\\Dokumente und Einstellungen\\User\\Desktop\\") + name2; rename( from.c_str(), to.c_str(); );Und dann hätte ich auch nich eine etwas denke ich mal dumme Frage und zwar wie kann ich überhaupt eine .exe erstellen um sie von irgendwo anders zu starten.
Wenn du dein Programm ausführst, gibt's schon eine Exe-Datei. Die kannst du einfach jemand anderem in die Hand drücken.
-
const std::string desktop_path("C:\\Dokumente und Einstellungen\\User\\Desktop\\"); std::rename((desktop_path + name).c_str(), (desktop_path + name2).c_str());...
-
Shashu schrieb:
(D)Evil schrieb:
Bitte statt <xxx.h> <cxxx> bei C-Standard Headern nutzen!
=> <stdio.h> <cstdio>Bringt das irgendwelche Vorteile und warum soll man das so machen??
Vorteil: Es ist Standard.greetz, Swordfish
-
Ok danke für eure Antworten jetzt funktioniert alles super :D.
Außer das mit der .exe. Ja ich habe eine .exe aber wenn ich diese auf einem anderen PC ausführe kommt dort immer eine Fehlermeldung das man die Anwendung neu installieren müsse. Muss ich noch irgendwas beachten?
-
Hallo!
Das klingt nach einer vermissten DLL, die auf dem anderen Rechner nicht existiert. Verlinkst du irgendwelche speziellen Bibliotheken mit deinem Programm?
-
Die CRT könnte dynamisch gelinkt sein. Eine Möglichkeit ist, die CRT (C-Runtime) statisch zu linken, für andere Möglichkeiten siehe Suchfunktion.
-
Also zu TdZ: nein ich habe keine DLL verlinkt und zu Badestrand: ich verstehe leider nicht genau was du da sagst :(.
Ich habe ein einfaches Programm wo ich die normalen Header mit eingefügt habe.
-
Shashu schrieb:
ich verstehe leider nicht genau was du da sagst :(.
Ich nehme mir mal die Freiheit und behaupte, worauf er hinaus wollte, ist Folgendes:
Wenn du MSVC benutzt, verlinkst du mit msvcrt.lib oder msvcrtd.lib?
In dem Falle benötigst du noch die Datei MSVCRxx.DLL/MSVCRxxD.DLL im Verzeichnis der Executable (zu finden im System32- oder System-Ordner), da es sich um dynamische Varianten der C-Runtime handelt. Alternativ kannst du auch auf die statischen Gegenstücke zurückgreifen (libcmt.lib/libcmtd.lib).