short program that will build a stl::list of directory names and all the files they contain. recursively calls itself when a new directory is encountered. This has been compiled with both VC++ 6.0 and Dev-Shed compiles on MS-Windows XP Pro. It will not work on *nix or probably MAC computers.

Illustrates simple use of std::list, std::vector, std::string, std::cin and std::cout. as well as intention of the program using _findfirsti64() and _findnexti64().

#pragma warning(disable: 4786)
#include <io.h>
#include <string>
#include <vector>
#include <list>
#include <iostream>
using namespace std;

// structure to hold a directory and all its filenames.
	string path;
	vector<string> theList;

void TransverseDirectory(string path, list<FILELIST>& theList)
	struct _finddatai64_t data;
	string fname = path + "\\*.*";
	long h = _findfirsti64(fname.c_str(),&data);
	if(h >= 0)
		FILELIST thisList;
		list<FILELIST>::iterator it = theList.end();

		(*it).path = path;
		do {
			if( (data.attrib & _A_SUBDIR) )
				// make sure we skip "." and "..".  Have to use strcmp here because
				// some file names can start with a dot, so just testing for the 
				// first dot is not suffient.
				if( strcmp(,".") != 0 &&strcmp(,"..") != 0)
					// We found a sub-directory, so get the files in it too
					fname = path + "\\" +;
					// recurrsion here!

				// this is just a normal filename.  So just add it to our vector

		}while( _findnexti64(h,&data) == 0);



int main(int argc, char* argv[])
	list<FILELIST> MyList;
	string path;
	cout << "Enter starting path ... ";
	list<FILELIST>::iterator it;
	for(it = MyList.begin(); it != MyList.end(); it++)
		vector<string>::iterator its;
		for(its = (*it).theList.begin(); its != (*it).theList.end(); its++)
			cout << (*it).path + "\\" + (*its) << endl;

	return 0;

This is a C++ program and should be moved to the cplusplus snippets!

I get this error:

error C2664: 'strcmp' : cannot convert parameter 1 from '__finddata64_t' to 'const char *'

I pass to string before calling strcmp(), but I wonder how it works for you.

The above program displays only partial details .....Not correct list of all files and directories...

excellant work .. thanks alot
i appreciate it alot