0

我正在尝试检查目录是否存在。我想让它更可靠,我正在尝试使用带有预定义变量的 stat 来检查用户名,但我总是遇到错误。

这是 userdir 字符串输出:/home/root/test

    string userdir="/home/"+user+"/test";

  struct stat st ;
  if(stat(userdir, &st) == 0)
    printf( "test directory exist\n" );
  else
    printf("test directory don't exist\n");
4

2 回答 2

3

stat()需要一个const char *,而不是一个std::string

if (stat(userdir.c_str(), &st) == 0)
//               ^^^^^^^
于 2013-07-14T15:16:39.107 回答
2

如果string是,std::string那么您需要调用stat(userdir.c_str(), &st)-stat采用 C 样式字符串,而不是 C++ 字符串。

最小的例子:

#include <string>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>

int main() {
  const std::string dir="/tmp";
  struct stat st;

  return stat(dir, &st); // Error

  return stat(dir.c_str(), &st); // Correct
}
于 2013-07-14T15:15:00.113 回答