2013-07-14 33 views
0

我想檢查目錄是否存在。我想使它更可靠,我試圖使用stat來檢查用戶名,但所有的時候我都會收到錯誤。C++文件/目錄統計與變量

這裏的用戶目錄字符串輸出:/首頁/根/測試

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"); 
+1

有什麼錯誤? –

+1

通常,如果包含[SSCCE](http://sscce.org),人們回答您的問題要容易得多。 – Flexo

回答

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 
} 
+0

謝謝你,現在它工作:D。 – SEJBR

2

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

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