程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 更多關於編程 >> C++下的目錄遍歷操作

C++下的目錄遍歷操作

編輯:更多關於編程

       最近使用C#比較多,對於目錄操作DirectoryInfo和Directory這個類感覺用起來很方便,突然又要寫點C++代碼,也要使用目錄遍歷,想了想以前的經歷,記得好像MFC中的CFileFind類使用起來還算方便,但具體使用也忘了,又要花點時間去查下,還是記錄在這以後再使用來查閱也方便。

      在VC++下使用CFileFind類,首先要在項目屬性設置中關於“MFC的使用”設置好,再在頭文件中包含 afx.h,最後就可以使用CFileFind類了。

      具體使用還是看代碼,微軟提供的遍歷目錄的代碼:

      void Recurse(LPCTSTR pstr)

      {

      CFileFind finder;

      // build a string with wildcards

      CString strWildcard(pstr);

      strWildcard += _T("*.*");

      // start working for files

      BOOL bWorking = finder.FindFile(strWildcard);

      while (bWorking)

      {

      bWorking = finder.FindNextFile();

      // skip . and .. files; otherwise, we'd

      // recur infinitely!

      if (finder.IsDots())

      continue;

      // if it's a directory, recursively search it

      if (finder.IsDirectory())

      {

      CString str = finder.GetFilePath();

      TRACE(_T("%sn"), (LPCTSTR)str);

      Recurse(str);

      }

      }

      finder.Close();

      }

      void PrintDirs()

      {

      Recurse(_T("C:"));

      }

      代碼說明:

      1. 項目選用多字節字符集,不想去糾結_T, LPCTSRT等;

      2. 關於TRACE,就是一個debug下的宏,差不多等於printf,具體參考:http://msdn.microsoft.com/en-us/library/4wyz8787(v=vs.90).aspx

      3. CFileFind: FindNextFile一定要至少提前GetFileName等成員函數前調用一次,否則要報錯。所以bWorking = finder.FindNextFile();這行代碼放前面

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved