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 回答