cómo obtener nombres de archivos frente a nombres de directorio en c ++ (usando la biblioteca boost del sistema de archivos)

Cuando usoboost::filesystem para obtener una lista de nombres de archivo en un directorio, recibo nombres de archivo y nombres de directorio:

#include <string>
#include <iostream>
#include <boost/filesystem.hpp>
using namespace std;
using namespace boost::filesystem;

int main()
{
    path p("D:/AnyFolder");
    for (auto i = directory_iterator(p); i != directory_iterator(); i++)
    {
        cout << i->path().filename().string() << endl;
    }
}

La salida es como:

file1.txt
file2.dat
Folder1 //which is a folder

¿Hay alguna forma rápida de distinguir entre archivos y carpetas? Mi sistema operativo es Windows 8.1, si es importante.

Respuestas a la pregunta(2)

Su respuesta a la pregunta