Problem mit "rename"-Funktion und Dateipfad zerlegen
-
Hi.
Wie kann ich aus einem Dateipfad (z.B.: "C:\\Test\\Bla.txt") nur das Verzeichnis (z.B.: "C:\\Test") und die Endung der Datei (z.B.: "txt" oder "html") herauskopieren? ... Wenn es geht, bitte mit Quellcode-Beispiel. PS: Ich verwende die C++-Builder-AnsiStrings (ähnlich wie std::string).
Außerdem habe ich ein Problem mit der "rename"-Funktion. Ich übergebe ihr z.B. die Parameter "C:\\Test\\Bla.txt" und "C:\\Test\\Datei1.txt", aber die Datei wird nicht umbenannt...
Ausschnitt meines Quellcodes:
const int anzahlDateien = 2; String pfad = "C:\\Test"; String dateien[anzahlDateien] = {"Bla.txt", "Blub.txt"}; String endungen[anzahlDateien] = {"txt", "txt"}; String titel = "Datei"; for (int i = 0; i < anzahlDateien; i++) { String datei = pfad + "\\" + dateien[i]; String neuerName = pfad + "\\" + titel + IntToStr(i + 1) + "." + endungen[i]; rename(datei.c_str(), neuerName.c_str()); // Fehler: Datei wird nicht umbenannt! }
-
Ok, ich habe jetzt "rename" durch "MoveFile" ersetzt... Das funktioniert jetzt. Benötige nur noch Hilfe bei dem ersten Problem.
-
für dein erstes Problem hab ich da was, aber es gibt bestimmt noch eine bessere Möglichkeit,
diese funktioniert aber auch:#include<iostream> #include<string> using namespace std; int main(){ string name("D:\Data\datei.ein"), endung(""); int len = name.length(); for(int ppos=len; name[ppos]!='.' && !(ppos<0) ;ppos--); for(int pos=ppos; pos<len ;pos++){ endung += name[pos]; } cout<<"endung:"<<endung<<endl; return 0; }
erzeugt jedoch beim Compilieren 2 warnings:
H:\C\C++\040621zuweis_c_int\zuweisHP.cpp(17) : warning C4129: 'D' : unrecognized character escape sequence
H:\C\C++\040621zuweis_c_int\zuweisHP.cpp(17) : warning C4129: 'd' : unrecognized character escape sequence
-
Eigentlich falsches Forum (gehört IMHO nach Borland C++ Builder (VCL/CLX)),
aber guck dir mal ExtractFileName, ExtractFilePath, ExtractFileExt usw. an!
-
Danke, hat mir sehr geholfen!