1. 程式人生 > >VC 遍歷資料夾所有檔名,程式碼簡短。下面函式是獲取YY賬號,(對xml的解析操作)

VC 遍歷資料夾所有檔名,程式碼簡短。下面函式是獲取YY賬號,(對xml的解析操作)

#include <filesystem> #include <string> #include <vector> #include "tinyxml.h" using namespace std; using namespace std::tr2::sys; string ReadData(const char* str);

BOOL  DirectoryList(); int main() {     vector<string> fileLists;     string path = "C:\\Users\\Administrator\\AppData\\Roaming\\duowan\\yy\\mainframe\\account\\";     directory_iterator it(path);     while (it != directory_iterator()){         string tmp = it->path().string();         string fullpath = path + tmp;         fileLists.push_back(fullpath);

        ++it;     }     for (size_t i = 0;i < fileLists.size();i++)     {         string uniqueid = ReadData(fileLists[i].c_str());         cout<<uniqueid<<endl;     }     getchar();     return 0; } string ReadData(const char* str)  {   TiXmlDocument xdoc;   if (!xdoc.LoadFile(str)) {     return "LoadFile fail";   }   TiXmlElement* filexml = xdoc.RootElement();   if (filexml == NULL) {       cout<<"RootElement fail"<<endl;   }     TiXmlElement* xname    = filexml->FirstChildElement("name");     TiXmlElement* uniqueid = filexml->FirstChildElement("uniqueid");     std::string   uni = uniqueid->GetText();     return uni; } BOOL  DirectoryList() {     LPCWSTR Path = L"C:\\Users\\Administrator\\AppData\\Roaming\\duowan\\yy\\mainframe\\account\\*.*";     WIN32_FIND_DATA FindData;     HANDLE hError;     int FileCount = 0;

    hError = FindFirstFile(Path, &FindData);     if (hError == INVALID_HANDLE_VALUE)     {         printf("搜尋失敗!");         return FALSE;     }     BOOL filebool = TRUE;     wchar_t FullPathName[MAX_PATH] = {0};     while(hError && filebool)     {             if (wcscmp(FindData.cFileName, L".") == 0 || wcscmp(FindData.cFileName, L"..") == 0 )         {             filebool = ::FindNextFile(hError, &FindData);             continue;         }         cout<<FindData.cFileName<<endl;         wsprintf(FullPathName, L"%s\\%s", Path,*FindData.cFileName);         FileCount++;         cout<<FullPathName<<endl;         filebool = ::FindNextFile(hError, &FindData);

        if (FindData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)         {             //DirectoryList(FullPathName);         }     }      FindClose(hError);     cout<<FileCount<<endl;     return TRUE; }