php to c++: working with a filesystem

This is a wiki page. Be bold and improve it!

If you have any questions about the content on this page, don't hesitate to open a new ticket and we'll do our best to assist you.

This section covers the C++ equivalest of more or less the php function in the File System Related Extensions / Filesystem:
http://php.net/manual/en/book.filesystem.php

What is the C++ equivalent of the following PHP functions?

is_dir()

<pre>
#include <boost/filesystem/operations.hpp>
#include "boost/filesystem/path.hpp"
#include <iostream>

namespace fs = boost::filesystem;

using std::cout;

int main( int argc, char *argv[]) {

        if (argc < 2) {
                cout << "\nUsage: run.is_dir [path] \n\n";
                return 1;
        }

        if (fs::is_directory(argv[1]))
        //if (fs::is_directory("/usr"))
                cout << "OK\n";
        else
                cout << "Not ok!\n";
        return 0;
}
</pre>

is_readable()

1) POSIX (Linux) solution: use the function access().
See man 2 access (have the manpages-dev package installed).

2) Cross-platform solution: try to open the file for reading (with std::ifstream) and see if you get an error message. Or for directories, use boost::filesystem::directory_iterator.