Dateinamen lesen
-
Hallo,
wie bekomme ich den Dateinamen aus einem vollständigen Pfad . Muss ich die Zeichenkette parsen oder geht das auch anders...?
Beispiel:
C:\workspace\Editor\Data\Meshes\test.3ds
->test.3ds
-
das letzt \ suchen und den rest nehmen
-
Parsen.
MfG SideWinder
-
Huhu !
Hab was in der MSDN gefunden:
Break a path name into components.
void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext);#include <stdio.h> #include <stdlib.h> void main() { char* pfad = "C:\\workspace\\Editor\\Data\\Meshes\\test.3ds"; char fname[_MAX_FNAME]; char ext[_MAX_EXT]; _splitpath( pfad, NULL , NULL, fname, ext ); puts(fname); // -> test printf("%s%s\n", fname, ext ); // -> test.3ds }
-
proggingmania schrieb:
Hab was in der MSDN gefunden:
Break a path name into components.
void _splitpath( const char *path, char *drive, char *dir, char *fname, char *ext);MSDN ..., Unterstrich vorm Funktionsnamen ... - da sollte es eigentlich klicken. Dies ist ein Zeichen (gerade bei MS ist das sehr verbreitet) für nicht standard konforme Funktionen (etc.).
Aber parsen ist doch, gerade mit std::string/std::wstring, janz easy...
:#include <string> using namespace std; bool ExtractFileName(const string& strPath, string& strFileName) { string::size_type stPos = strPath.rfind('\\'); if(stPos != string::npos) { strFileName.assign(strPath, stPos, strPath.length() - stPos); return (true); } return (false); }Beispiel:
string strFileName; ExtractFileName("C:\\workspace\\Editor\\Data\\Meshes\\test.3ds", strFileName); cout << "Dateiname: " << strFileName << endl;PS, @proggingmania:
Und <stdio.h> bzw. <stdlib.h>, puts und printf ist auch C...pfui-deibel
.