【问题标题】:C++ - Load all filename + count the number of files in a current directory + filter file extensionC ++ - 加载所有文件名+计算当前目录中的文件数+过滤文件扩展名
【发布时间】:2011-01-24 05:00:58
【问题描述】:

我想计算当前目录中的文件数以及加载数组中的所有文件名。如果可能的话,我也想知道如何过滤文件扩展名

【问题讨论】:

    标签: c++ file macos directory filenames


    【解决方案1】:

    答案是Boost.Filesystem,特别是directory_iterator

    【讨论】:

      【解决方案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;
      }
      

      【讨论】:

      • awesome :) 我用 dirent.h 库解决了我的问题,但这是对 boost.FileSystem 的一个很好的参考。 tyvm :)
      猜你喜欢
      • 2010-12-28
      • 1970-01-01
      • 2020-11-02
      • 1970-01-01
      • 1970-01-01
      • 2012-05-29
      • 2017-05-09
      • 2013-01-30
      • 1970-01-01
      相关资源
      最近更新 更多