2009-09-03 19 views
9

什麼是建立在這樣的路徑是一個目錄內的便捷方法創建一個目錄:「\服務器\富\酒吧\」C++如何從一個路徑

注意,中間目錄可能不存在。

CreateDirectory和mkdir似乎只能創建一個目錄的最後部分,否則會給出一個錯誤。

該平臺是windows,MSVC編譯器。

謝謝!

回答

7

SHCreateDirectoryEx()可以做到這一點。它在XP SP2和更新版本的Windows上可用。

+2

已棄用:「[此功能可通過Windows XP Service Pack 2(SP2)和Windows Server 2003獲得。它可能會在後續版本的Windows中更改或無法使用。]」 – Technophile 2014-12-22 22:40:11

+2

@Technophile - 根據MSDN,不推薦使用SHCreateDirectory在XP SP2和Server 2003之後(http://msdn.microsoft.com/zh-cn/library/bb762130(v=vs.85).aspx)。它沒有提到'SHCreateDirectoryEx'被棄用。 – Ferruccio 2015-01-02 12:46:51

+1

它似乎目前SHCreateDirectory ** Ex **也被棄用:msdn.microsoft.com/en-us/library/bb762131(v=vs.85).aspx – sergiol 2017-03-10 18:47:58

1

我會寫一個循環。將路徑拆分爲組件,並「走路」,即從頭開始,檢查它是否存在。如果是,請輸入並繼續。如果沒有,創建它,輸入並繼續。對於獎勵積分,檢測組件是否存在,但是是文件而不是目錄。

+0

謝謝,好主意。 雖然我會期待在winapi或stl中的函數完成此操作嗎? – clamp 2009-09-03 14:53:30

24

如果你可以使用一個外部庫,我想看看boost::filesystem

#include <boost/filesystem.hpp> 
namespace fs=boost::filesystem; 

int main(int argc, char** argv) 
{ 
    fs::create_directories("/some/path"); 
} 
0

您還可以使用模板布爾create_directories(const的路徑& P)Boost::Filesystem庫。它不僅在Windows中可用。

相關問題