带变量的C ++文件/目录统计信息

时间:2013-07-14 15:13:32

标签: c++ linux

我正在尝试检查目录是否存在。我想让它更可靠,我正在尝试使用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");

2 个答案:

答案 0 :(得分:2)

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

if (stat(userdir.c_str(), &st) == 0)
//               ^^^^^^^

答案 1 :(得分:1)

如果stringstd::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
}