我正在尝试检查目录是否存在。我想让它更可靠,我正在尝试使用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");
答案 0 :(得分:2)
stat()
需要const char *
,而不是std::string
:
if (stat(userdir.c_str(), &st) == 0)
// ^^^^^^^
答案 1 :(得分:1)
如果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
}