Listing 7: Loads STL vector with full pathnames
#include <iostream>
#include <stdexcept>
#include <vector>
#include "DirWalk.h"
class PowerWalk : public DirWalk {
#if defined(_MSC_VER)
vector<string, allocator<string> > Files_;
#else
vector<string> Files_;
#endif
public:
inline PowerWalk() throw() :
DirWalk(TRUE,FALSE) {}
inline virtual void FoundFile() {
char FullPathBuf[_MAX_PATH];
LPTSTR dummy;
if(GetFullPathName(Filename(),
_MAX_PATH,
FullPathBuf,
&dummy))
Files_.push_back(string(FullPathBuf));
else
Files_.push_back(string(Filename()));
}
inline void PrintFiles() throw() {
#if defined(_MSC_VER)
vector<string, allocator<string> >
::iterator i;
#else
vector<string>::iterator i;
#endif
for(i=Files_.begin();i!=Files_.end();i++)
cout << (*i).c_str() << endl;
}
};
int main() {
PowerWalk pw;
try {
pw.Walk();
pw.PrintFiles();
} catch(exception& e) {
cout << e.what() << endl;
return 1;
} catch(...) {
return 1;
}
return 0;
}
//End of File