読者です 読者をやめる 読者になる 読者になる

Boost.Range版directory_rangeの予定

C++

Boost 1.46.0でFilesystemがデフォルトv3になったので、wdirectory_rangeは用意しない方針。
おそらく、移植が終わる頃にはv2はなくなっているはず。

#include <iostream>
#include <utility>
#include <boost/range/algorithm/for_each.hpp>
#include <boost/range/directory_range.hpp>

namespace fs = boost::filesystem;

void disp(const fs::path& p)
{
    if (is_directory(p))
        std::cout << "*";
    std::cout << p.filename() << std::endl;
}

int main()
{
    const fs::path path = "C:\\Language\\cpp";
    boost::for_each(boost::directory_range(path), disp);
}
*"bin"
"compile.bat"
"compile03.bat"
"compile45.bat"
"compile46.bat"
"coroutine.hpp"
"create_svg_overlay.hpp"
"create_svg_two.hpp"
"main.cpp"
"pngconv.bat"
"preprocess.bat"
"sample"
"sample.exe"
"setpath.bat"
"tags"
"test.h"
"yield.hpp"
#include <iostream>
#include <utility>
#include <boost/range/algorithm/for_each.hpp>
#include <boost/range/directory_range.hpp>

namespace fs = boost::filesystem;

void disp(const fs::path& p)
{
    if (is_directory(p))
        std::cout << "*";
    std::cout << p.filename() << std::endl;
}

int main()
{
    const fs::path path = "C:\\Language\\cpp";
    boost::for_each(boost::recursive_directory_range(path), disp);
}
*"bin"
"config.log"
*"gcc-4.5"
*"debug"
"main.o"
"sample.exe"
*"threading-multi"
*"msvc-10.0"
*"debug"
"main.obj.rsp"
"compile.bat"
"compile03.bat"
"compile45.bat"
"compile46.bat"
"coroutine.hpp"
"create_svg_overlay.hpp"
"create_svg_two.hpp"
"main.cpp"
"pngconv.bat"
"preprocess.bat"
"sample"
"sample.exe"
"setpath.bat"
"tags"
"test.h"
"yield.hpp"

頭に「*」が付いているのがディレクトリです。
binはbjamで作成されたディレクトリ。