Вы можете использовать boost :: filesystem:
struct space_info // returned by space function
{
uintmax_t capacity;
uintmax_t free;
uintmax_t available; // free space available to a non-privileged process
};
space_info space(const path& p);
space_info space(const path& p, system::error_code& ec);
Пример:
#include <boost/filesystem.hpp>
using namespace boost::filesystem;
space_info si = space(".");
cout << si.available << endl;
Возвращает: объект типа space_info.Значение объекта space_info определяется как если бы с помощью statvfs () POSIX получить POSIX struct statvfs, а затем умножить его члены f_blocks, f_bfree и f_bavail на его член f_frsize и присвоить результаты емкости, free идоступные участники соответственно.Любые члены, для которых значение не может быть определено, должны быть установлены в -1.