1

私は c++ が初めてです。そして、フォルダーから名前を取得する関数を書きたいと思います。

たとえば、C:\TEST という名前のフォルダーがあり、このフォルダーにはたくさんの text.txt ファイルがあり、すべての .txt ファイル名を文字列配列に格納したいと考えています。

誰でもこの問題について私を助けることができます。

私はこのようなことを試みましたが、失敗しました

const int arr_size = 10;
some_type src[arr_size];
// ...
some_type dest[arr_size];
std::copy(std::begin(src), std::end(src), std::begin(dest));
4

2 に答える 2

3

ブースト ファイルシステムの使用:

#include<vector>
#include<string>
#include <iostream>
#include <iterator>
#include <algorithm>
#include <boost/filesystem.hpp>
using namespace std;
using namespace boost::filesystem;

int main(int argc, char* argv[])
{
    vector<string> fnames; //your filenames will be stored here

    path p (argv[1]);   // C:\TEST
    directory_iterator di(p);
    directory_iterator di_end;

    while(di != di_end)
    {
        fnames.push_back( di->path().filename().string() );
        ++di;
    }
}

C:\TEST上記プログラムへのコマンドライン引数として指定します。

于 2013-08-23T14:36:36.237 に答える
0
TCHAR szDir[MAX_PATH]; 
WIN32_FIND_DATA ffd;
HANDLE hFind = INVALID_HANDLE_VALUE; 

hFind = FindFirstFile(szDir, &ffd);

if (INVALID_HANDLE_VALUE != hFind) 
{
 do
  {
   if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
     // You can do a recursive search here, the current file is a directory
    }
   src[arr_size] = ffd.cFileName;
   arr_size++;
  }
  while (FindNextFile(hFind, &ffd) != 0);


  FindClose(hFind);
}
于 2013-08-23T09:22:59.013 に答える