一种跨平台的C++遍历目录的方法

参考了网络上各路大神的实现方法。主要使用了io.h库


  
  
  1. #include <iostream>
  2. #include <cstring>
  3. #include <io.h>
  4. using namespace std;
  5. void visitDir(const char* dir)
  6. {
  7. char dirNew[ 100];
  8. strcpy(dirNew, dir);
  9. strcat(dirNew, "\\*.docx"); // 在目录后面加上"\\*.*"进行第一次搜索
  10. intptr_t handle;
  11. _finddata_t findData;
  12. handle = _findfirst(dirNew, &findData);
  13. if (handle == -1) // 检查是否成功
  14. {
  15. datafile.close();
  16. return;
  17. }
  18. do
  19. {
  20. if (findData.attrib & _A_SUBDIR)
  21. {
  22. if( strcmp(findData.name, ".") == 0 || strcmp(findData.name, "..") == 0)
  23. continue;
  24. cout << findData.name << "\t<dir>\n"; // 在目录后面加上"\\"和搜索到的目录名进行下一次搜索
  25. strcpy(dirNew, dir);
  26. strcat(dirNew, "\\");
  27. strcat(dirNew, findData.name);
  28. visitDir(dirNew);
  29. }
  30. else
  31. cout << findData.name << "\t" << findData.size << " bytes.\n";
  32. } while (_findnext(handle, &findData) == 0);
  33. _findclose(handle);
  34. }
  35. int main()
  36. {
  37. char dir[ 100];
  38. cout<< "Enter a directory:";
  39. cin.getline(dir, 100);
  40. visitDir(dir);
  41. return 0;
  42. }

猜你喜欢

转载自www.cnblogs.com/golaxy/p/9286451.html