如何检查字符串是否指定目录?

时间:2011-04-07 11:49:48

标签: c++

假设有一些字符串:

std::string some_string = "some_string";

我想知道chdir(some_string.c_str())是否会在不调用的情况下返回-1。有快速的方法吗?

P.S。我希望我的代码也适用于Windows,我将使用_chdir()

4 个答案:

答案 0 :(得分:2)

我会使用Boost's is_directory function,您可以在Boost's Filesystem Reference page找到更多信息。

答案 1 :(得分:2)

#ifdef WIN32
# include <io.h>
#else
# include <unistd.h>
#endif

int access(const char *pathname, int mode);
// check user's permissions for a file

int mode values:

00 - 仅存在, 02 - 只写, 04 - 只读, 06 - 读写。

如果文件具有给定模式,则函数返回0.

答案 2 :(得分:2)

  

我想知道chdir(some_string.c_str())是否会在不调用的情况下返回-1

你需要小心做出那些检查。问题是如果你依赖于他们的结果,因为在你进行检查和执行依赖于检查的操作之间,另一个进程可能已经执行了一个操作(在这种情况下为rmdir),这使得assumptin in你的代码。也就是说,您可以在代码中引入竞争危险。

答案 3 :(得分:0)

由于您希望它适用于Windows,请使用返回GetFileAttributes()File Attribute Constants

GetFileAttributesEx甚至更好。