ファイルが通常のファイルかどうかを確認するにはどうすればよいですか?

ポータブル boost::filesystem を使用できます (標準 C++ ライブラリは、最近 C++17 で std::filesystem が導入されるまで、これを行うことができませんでした):

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

int main() {
    using namespace boost::filesystem;

    path p("/bin/bash");
    if(is_regular_file(p)) {
        std::cout << "exists and is regular file" << std::endl;
    }
}

ファイルで stat(2) を呼び出し、st_mode で S_ISREG マクロを使用する必要があります。

次のようなもの (この回答から適応):

#include <sys/stat.h>

struct stat sb;

if (stat(pathname, &sb) == 0 && S_ISREG(sb.st_mode))
{
    // file exists and it's a regular file
}

C++ 自体はファイル システムを処理しないため、言語自体に移植可能な方法はありません。プラットフォーム固有の例は stat です *nix (Martin v. Löwis によって既に指摘されているように) および GetFileAttributes の場合

また、Boost にアレルギーがない場合は、かなりのクロスプラットフォーム boost::filesystem があります。 .