2013年12月4日 星期三

讀資料夾下的檔案


void main(int argc, char **argv)
{
    std::string filename,strPNG,strTXT;

    wchar_t InputPath[65535] = L"C:\\MyFolder";
 wchar_t szDir[65535];
 wchar_t dir[65535];
 
 _WIN32_FIND_DATAW FileData;
 HANDLE          hList;
 swprintf(szDir, L"%s\\*", InputPath );
 hList = FindFirstFileW( szDir, &FileData);

 SetCurrentDirectory( InputPath );

 while(1)
 {
  if ( hList == INVALID_HANDLE_VALUE )
  {
   cout << "No files be found.\n\n";
  }
  else
  {
   if (!FindNextFile(hList, &FileData)) 
   {
    if (GetLastError() == ERROR_NO_MORE_FILES)
     break;
   }
   swprintf(dir, L"%s\\%s", InputPath, FileData.cFileName);
   wprintf( L"%s\n", dir);
  }
 }
 FindClose(hList);
}
wsprintf 和 swprintf wsprintf 其實是一個巨集,對應著兩個 Windows API:wsprintfA 和 wsprintfW。最前面的那個w,不是寬字符(wide)的“w”,而是Windows的“w”。 而 swprintf 是 sprintf 的寬字符版,是 C 的標準輸入輸出。而造成這個問題的原因,則在於 Windows 的 wsprintf,並不支援浮點數……

沒有留言:

張貼留言