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

その場合stringstd::string、呼び出す必要がありますstat(userdir.c_str(), &st)- statC++ の文字列ではなく、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 に答える