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 😃 .


Anmelden zum Antworten