boost::filesystem

#include <iostream>

#define BOOST_FILESYSTEM_VERSION 3    // filesystem で日本語を使用する場合に定義

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

#include <boost/range/algorithm/for_each.hpp>

int
main(){
    
    namespace fs = boost::filesystem;
    
    // カレントディレクトリのファイルを列挙
    auto dir_range = std::make_pair(
                        fs::directory_iterator(fs::current_path()),
                        fs::directory_iterator() );
    boost::for_each(dir_range, [](const fs::path& p){
        if( boost::filesystem::is_directory(p) == false ){
            std::cout << p.filename() << std::endl;
        }
    });

    // ディレクトリの削除
    // '/' でパスの結合
    fs::remove_all(fs::current_path()/"test_directory");

    // 新しくディレクトリを作成
    fs::create_directory(fs::current_path()/"test_directory");
    
    // 作成したディレクトリに移動
    fs::current_path(fs::current_path()/"test_directory");
    
    // 新しいファイルを作成
    fs::ofstream    ofs("test_file.txt");
    ofs << "Hello File System\n";
    ofs.close();

    // コピー
    fs::copy_file("test_file.txt", "test_file2.txt");
    
    return 0;
}

ファイルそのものに対して操作を行うライブラリです。
ディレクトリの作成やファイルのコピーが簡単に出来ます。
WindowsAPIを使ったことがある人は分かると思いますが、あれよりもかなり使い勝手がいいです。
ファイルパスに対しても拡張子やディレクトリなんかの取得が出来て結構かゆい所に手が届く。
うむ、これは便利だ。


[boost]
ver 1.44.0
[参照]
http://www.kmonos.net/alang/boost/classes/filesystem.html
http://www.boost.org/doc/libs/1_44_0/libs/filesystem/v3/doc/tutorial.html