Ordner durchsuchen



  • Hallo,

    hab schon einige Foren abgeklappert, aber nichts zu o.g. Thema gefunden.
    Kann mir jemand sagen, ob es Funktionen gibt, mit denen man Ordner durchsuchen kann, also die Namen der Ordner und Dateien darin lesen kann, in Ordner wechseln, eine Ebene höher springen u.s.w. kann?

    Gruß
    snami



  • Hallo,

    Nicht (Derzeit) in StandardC++. Du könntest z.Bsp. boost::filesystem nutzen oder die Funktionen deine Betriebssystem-API.



  • zufällig habe ich neulich dasselbe gesucht und bei koders irgendwo gefunden:

    dir.h:

    #include <stddef.h>
    #include <stdio.h>
    #include <sys/types.h>
    #include <dirent.h>
    #include <vector>
    #include <iostream>
    #include <string>
    using namespace std;
    class dir
    {
    private:
        DIR *dp;
        struct dirent *ep;
        vector<string> dir_vec;
    public:
        dir();
        ~dir();
       bool open_dir( char *c_dir );
       bool open_dir( string &s_dir );
       void close_dir();
       void read_dir();
       vector<string> get_dir_vec();
    };
    

    dir.cpp:

    #include "dir.h"
    using namespace std;
    
    dir::dir()
    {
    }
    
    dir::~dir()
    {
     dir_vec.clear();
    // if ( dp )
    //  delete dp;
     if ( ep )
      delete ep;
    }
    
    bool
    dir::open_dir( char *c_dir )
    {
     return open_dir( *new string( c_dir ) );
    }
    
    bool
    dir::open_dir( string &s_dir )
    {
     dp = opendir( s_dir.c_str() );
    
     if ( dp == NULL )
      return false; // Could not open dir.
    
     return true; // Could open dir with success.
    }
    
    void
    dir::close_dir()
    {
     if ( dp != NULL )
      closedir( dp );
    }
    
    void
    dir::read_dir()
    {
     if ( dp != NULL )
      while( ep = readdir( dp ) )
       dir_vec.push_back( string( ep->d_name ) );
    }
    
    vector<string>
    dir::get_dir_vec()
    {
     return dir_vec;
    }
    

    hat mir eigentlich ausgereicht.
    cya


Anmelden zum Antworten