如何在c ++中将文件夹中的文件名存储到数组中?

时间:2013-08-23 09:12:58

标签: c++ windows

我是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));

2 个答案:

答案 0 :(得分:3)

使用boost文件系统:

#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作为上述程序的命令行参数。

答案 1 :(得分: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);
}