本问题已经有最佳答案,请猛点这里访问。
如何确定在Linux中使用C++的目录(不是文件)存在吗?我尝试使用stat()函数,但当找到文件时,它返回正值。我只想找出输入的字符串是否是一个目录,而不是别的什么。
stat()应该工作。你怎么用的?
结构stat st;cout
根据man(2)stat,您可以在st_模式字段上使用s_isdir宏:
bool isdir = S_ISDIR(st.st_mode);
另一方面,我建议使用boost和/或qt4,如果您的软件可以在其他OSS上运行,那么跨平台支持就更容易了。
这是正确的答案。
在including、andi get the compiler error,g++reports"error:'s诳iddir'was not declared in this scope"之后。有人知道会发生什么吗?
巴哈。Typo。S iddir->S isdir。
我在这里找到的东西怎么样
#include
bool DirectoryExists( const char* pzPath )
{
if ( pzPath == NULL) return false;
DIR *pDir;
bool bExists = false;
pDir = opendir (pzPath);
if (pDir != NULL)
{
bExists = true;
(void) closedir (pDir);
}
return bExists;
}
或使用STAT
struct stat st;
if(stat("/tmp",&st) == 0)
if(st.st_mode & S_IFDIR != 0)
printf(" /tmp is present
");
也许没有那么糟糕,但是上面给出的示例并没有那么有效,下面的示例是我已经在使用的,除了我正在使用的!= =