如果文件是常规文件(并且不是目录,管道等),我如何签入C++?我需要一个函数isFile().
DIR *dp; struct dirent *dirp; while ((dirp = readdir(dp)) != NULL) { if ( isFile(dirp)) { cout << "IS A FILE!" << endl; i++; }
我已经尝试将dirp-> d_type与(unsigned char)0x8进行比较,但它似乎无法通过不同的系统进行移植.
您可以使用可移植的boost::filesystem
(标准C++库在最近在C++ 17中引入std :: filesystem之前无法做到这一点):
#include#include #include int main() { using namespace boost::filesystem; path p("/bin/bash"); if(is_regular_file(p)) { std::cout << "exists and is regular file" << std::endl; } }