以更好的方式访问子目录的文件

时间:2015-04-07 11:04:03

标签: c++ boost

我有目录测试和子目录元数据。 C:/Users/name/Desktop/test/metadata\\test_1.metadata。 我以这种方式访问​​元数据目录中的文件。

std::string filename = dir_iter->path().string();
std::string rawName = filename.substr( 0 , filename.find_last_of( "." ) ); 
std::string subRawDir = rawName.substr( 0 , rawName.find_last_of( "\\" ) ) + "/metadata\\";
std::string name = subRawDir + rawName.substr( filename.find_last_of( "\\" ) + 1 ) + ".metadata";

比这更好的方法会很好:)

1 个答案:

答案 0 :(得分:0)

你可以试试boost :: filesystem。它为您提供了许多函数来迭代目录,子目录和文件。 您可以找到教程和解释here

这是一个如何做到这一点的例子:

  #include <boost/filesystem.hpp>
  #include <boost/foreach.hpp> 

  boost::filesystem::path your_dir("C:/Users/name/Desktop/test/metadata"); 

  boost::filesystem::directory_iterator it(your_dir), end_of_dir;

  BOOST_FOREACH(boost::filesystem::path const &p, std::make_pair(it, end_of_dir))   
  { 
       if(is_regular_file(p))
       {
          // Do stuff with your file
       } 
  }