pickzy.com

C  |  C++  |  Objective-C  |  VC++  |  Win32  |  MFC  |  Java  |  Php  |  Delphi  |  Visual Basic  |  .Net  |  Networking  |  General  |  Games  |  Jobs  |  Javascript  |  




Menu

pickSourcecode.com


        

 




 

Cpp > Programs

 

cpp filedir sample and tutorials


#include <iostream>
#include <list>
#include <string>
using namespace std;


#include <fstream>
ofstream mcout("filedir.txt");


class File

{

public:

    File(const string & name) : m_name(name) {}

    ~File() {}


    const string & getName() const { return m_name; }

    
void setName(const string & name) { m_name = name; }
    virtual 
void Display(ostream & os, 
                         
int level = 1, 
                         const string & prefix = "");

private:

    string m_name;

};


class Directory : public File

{

public:

    Directory(const string & name) : File(name) {}

    ~Directory();


    virtual 
void Display(ostream & os, 
                         
int level = 1, 
                         const string & prefix = "");

    
void DisplayChildren(ostream & os, int level, 
                         const string & prefix);

    
void AddFile(File * fp) {m_FileList.push_back(fp);}
private:

    list<File *> m_FileList;

    typedef list<File *>::iterator FileIter;

};


//  To  display  a  File,  output  prefix  &  name  and  newline
void File::Display(ostream & os, int level, const string & prefix)
{

    os << level << ".  " << prefix << m_name << endl;

}



//  To  display  a  Directory,  output  name  and  newline,  then  
//  Display  all  of  my  contained  Files  using  recursive  call
void Directory::Display(ostream & os, int level, const string & prefix)
{

    File::Display(os, level, prefix);

    string newPrefix = prefix + getName() + ":";

    DisplayChildren(os, level, newPrefix);

}


void Directory::DisplayChildren(ostream & os, int level, const string & prefix)
{

    
for (FileIter iter = m_FileList.begin(); 
                  iter != m_FileList.end(); 

                  iter++)

        (*iter)->Display(os, level + 1, prefix);

}


Directory::~Directory()

{

    while (!m_FileList.empty())

    {

        delete m_FileList.front();

        m_FileList.pop_front();

    }

}


int main()
{

    Directory * dir = new Directory("TheDir");

    dir->AddFile(new File("File 1"));

    dir->AddFile(new File("File 2"));

    dir->AddFile(new File("File 3"));

    dir->AddFile(new File("File 4"));


    Directory *subdir = new Directory("SubDir 1");

    dir->AddFile(subdir);

    subdir->AddFile(new File("Sub File 1"));

    subdir->AddFile(new File("Sub File 2"));

    subdir->AddFile(new File("Sub File 3"));


    Directory *subdir2 = new Directory("SubDir 2");

    dir->AddFile(subdir2);

    subdir2->AddFile(new File("Sub File 4"));

    subdir2->AddFile(new File("Sub File 5"));

    subdir2->AddFile(new File("Sub File 6"));


    Directory *subsubdir = new Directory("SubSubDir 1");

    subdir->AddFile(subsubdir);

    subsubdir->AddFile(new File("Sub Sub File 1"));

    subsubdir->AddFile(new File("Sub Sub File 2"));

    subsubdir->AddFile(new File("Sub Sub File 3"));


    dir->Display(cout);

    delete dir;

    return 0;

}





 
Privacy Policy | About Us