The tut3 example is what you're looking for:
See it Live on Coliru
Here's a simplified version based on c++11:
#include <boost/filesystem.hpp>
#include <boost/range/iterator_range.hpp>
#include <iostream>
using namespace boost::filesystem;
int main(int argc, char *argv[]) {
path p(argc>1? argv[1] : ".");
if(is_directory(p)) {
std::cout << p << " is a directory containing:\n";
for(auto& entry : boost::make_iterator_range(directory_iterator(p), {}))
std::cout << entry << "\n";
}
}
You can see I linked boost_system (for the errorcode facilities) and boost_filesystem:
g++ -std=c++11 -Os -Wall -pedantic main.cpp -lboost_system -lboost_filesystem && ./a.out .
"." is a directory containing:
"./main.cpp"
"./a.out"