C ++ - загрузить все имена файлов + подсчитать количество файлов в текущем каталоге + фильтровать расширение файла

Я хочу подсчитать количество файлов в текущем каталоге, а также загрузить все имена файлов в массив. Если возможно, я хочу знать, как фильтровать расширение файла


person Thang Pham    schedule 05.03.2010    source источник


Ответы (2)


Свяжите следующую программу с -lboost_filesystem

#include <iostream>
#include <string>
#include <vector>

#include <boost/algorithm/string/case_conv.hpp>
#include <boost/filesystem.hpp>

int main( int argc, char ** argv )
{
  std::string ext = ".jpg";

  std::vector<std::string> files;

  for ( boost::filesystem::directory_iterator it( boost::filesystem::initial_path() );
        it != boost::filesystem::directory_iterator(); ++it )
  {
    if ( boost::filesystem::is_regular_file( it->status() ) &&
         boost::algorithm::to_lower_copy( it->path().extension() ) == ext )
    {
      files.push_back( it->path().filename() );
    }
  }

  std::cout << "Number of files: " << files.size() << std::endl;
  std::copy( files.begin(), files.end(), std::ostream_iterator<std::string>( std::cout, "\n" ) );

  return 0;
}
person Mathias Soeken    schedule 05.03.2010
comment
круто :) Я решаю свою проблему с помощью библиотеки dirent.h, но это отличная ссылка на boost.FileSystem. тывм :) - person Thang Pham; 09.03.2010

Ответ: Boost.Filesystem, в частности directory_iterator .

person Björn Pollex    schedule 05.03.2010