myoukakuのブログ

C++でゲームエンジンを作っていきます。

boost::file_system の directory_iterator は "." と ".." をとばす

boost::file_system::directory_iteratorを使うとディレクトリ内のファイルやディレクトリを簡単に列挙することができます。

#include <boost/filesystem.hpp>

using namespace boost::filesystem;
for (directory_iterator it(current_path());
     it != directory_iterator(); ++it)
{
    std::cout << it->path().filename() << std::endl;
}

このとき、Win32APIのFindFirstFile/FindNextFileを使ったときとは違って、"."(カレントディレクトリ)と".."(親ディレクトリ)は列挙されません。Win32APIを使うときはこの2つのディレクトリを毎回チェックしてはじいていたので、列挙されないのは地味にうれしいです。