datei umbenennen
-
Hallo
ich möchte files umbenennen mit _trename
der pfad der datei steht in tstring path zum beispiel: "C:\Tools\"
aber dann möchte ich die datei "test.txt" in "__test.txt" in tools umbenennen.
ich möchte nicht so vorgehen
_trename("C:\\Tools\\test.txt", "C:\\Tools\\__test.txt");
weil wenn sich der pfad zur datei ändert, möchte ich nicht den pfad bei jedem aufruf von _trename ändern, sondern nur einmal in einer variable. wie kann ich das machen, dass ich den pfad in eine variable schreibe und dann die zu verändernte datei noch dazu schreibe?
-
Naja, du hasts in MFC gepostet, also löse ich es so:
CString path, name, new_name; path = "C:\\dir\\"; name = "test.txt"; new_name = "__test.txt"; _trename(path+name,path+new_name);
MfG brot
-
danke für die antwort.
da hätte ich eigentlich auch selbst drauf kommen können. hab es auch so ähnlich gemacht.
aber nun kommt folgende Fehlermeldungerror C2664: 'rename' : Konvertierung des Parameters 1 von 'class _STL::basic_string<char,struct std::char_traits<char>,class _STL::allocator<char> >' in 'const char *'
nicht moeglich
Kein benutzerdefinierter Konvertierungsoperator verfuegbar, der diese Konvertierung durchfuehren kann, oder der Operator kann nicht aufgerufen werden
-
du kriegst als rückgabe der addition ein basic_string, erwartet wird const char*.
sollte afaik mit basic_string::c_str zu lösen sein.
alternativ etwas wieCString cmd1, cmd2; cmd1 = path+name; cmd2 = path+new_name; _trename(cmd1.GetBuffer(),cmd2.GetBuffer());
-
bei mir ist path ein tstring und kein CString. macht das einen unterschied?
wenn ich es so mache wie beschrieben (ohne GetBuffer() ) dann kommen die gleichen Fehlermeldungen. Und mit GetBuffer() kommt dann, kein Element von...
sorry wenn ich mich vielleicht etwas blöd anstelle, aber ich bin noch nicht wirklich so erfahren in c++
-
in dem fall falsches forum.
was ist tstring? eine klasse? mit was arbeitest du?
-
oh, tut mir leid, wenn es das falsche forum ist.
wenn ich mit dem mauszeiger drauf gehe kommt als beschreibung:
typedef std::basic_string<TCHAR> tstring
-
dann solltest dus mit
_trename(cmd1.c_str(),cmd2.c_str());
lösen können.
-
thx, jetzt hat alles geklappt
vielen dank für deine geduld
aber cmd1 und cmd2 müssen auch als tstring deklariert sein, nicht als CString
-
jop, davon gieng ich aus ;).
np btw