2014-06-09 134 views
0

我想使用GetDiskFreeSpace()函數,但我需要rootpathname。給定任何文件名輸入我可以使用哪個函數來查找其卷路徑名稱?如何找到根路徑名稱

我的功能,在命令行中輸入得到:

string targetFile; 
    cin.sync(); 
    cin.clear(); 
    cout << "Enter target file " << endl; 

    getline(cin, targetFile); 

    //if statement error handler for targetFile 
    fstream file(targetFile.c_str()); 
    if (!file) 
    { 
     cout << "File does not exist" << endl; 
    } 
    file.close(); 
+0

尋求調試幫助的問題(「爲什麼這個代碼不工作?」)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。沒有明確問題陳述的問題對其他讀者無益。請參閱:如何創建最小,完整和可驗證示例。 –

+1

調用'GetDiskFreeSpaceEx':*此參數不必指定磁盤上的根目錄。該函數接受磁盤上的任何目錄* –

+0

嗯,我試圖找出任何文件的卷的大小(以字節爲單位)使用GetDiskFreeSpace – dspaces1

回答

2

可以使用PathStripToRoot功能來做到這一點。

注意的是,文件建議您使用更安全PathCchStripToRoot以避免潛在的緩衝區溢出,但僅適用於Windows 8的

爲了支持相對路徑使用PathIsRelative檢測的相對路徑。如果路徑是相對的,則將工作目錄傳遞給上述其中一個函數。

+0

這但是如果用戶在目錄中已經讓我們說在C:\ Users \ Public \ Documents中並且通過cmd運行一個腳本,該腳本以一個名爲test.txt的文件爲目標。有無論如何採取test.txt文件,並發現它在磁盤C:\ – dspaces1

+1

我不知道我明白這個問題。只需提供該函數的完整路徑。如果你的文件名是相對的,你需要指定它的相對位置。您可以測試它是否相對,如果是這樣,則將工作目錄提供給我的答案中的某個函數。爲此,使用'PathIsRelative'。 –

+0

那麼如果沒有功能可以接收一個文件並找到它的音量,那麼我想這是我唯一的選擇。 – dspaces1

相關問題