什麼是建立在這樣的路徑是一個目錄內的便捷方法創建一個目錄:「\服務器\富\酒吧\」C++如何從一個路徑
注意,中間目錄可能不存在。
CreateDirectory和mkdir似乎只能創建一個目錄的最後部分,否則會給出一個錯誤。
該平臺是windows,MSVC編譯器。
謝謝!
什麼是建立在這樣的路徑是一個目錄內的便捷方法創建一個目錄:「\服務器\富\酒吧\」C++如何從一個路徑
注意,中間目錄可能不存在。
CreateDirectory和mkdir似乎只能創建一個目錄的最後部分,否則會給出一個錯誤。
該平臺是windows,MSVC編譯器。
謝謝!
SHCreateDirectoryEx()可以做到這一點。它在XP SP2和更新版本的Windows上可用。
我會寫一個循環。將路徑拆分爲組件,並「走路」,即從頭開始,檢查它是否存在。如果是,請輸入並繼續。如果沒有,創建它,輸入並繼續。對於獎勵積分,檢測組件是否存在,但是是文件而不是目錄。
謝謝,好主意。 雖然我會期待在winapi或stl中的函數完成此操作嗎? – clamp 2009-09-03 14:53:30
如果你可以使用一個外部庫,我想看看boost::filesystem
#include <boost/filesystem.hpp>
namespace fs=boost::filesystem;
int main(int argc, char** argv)
{
fs::create_directories("/some/path");
}
您還可以使用模板布爾create_directories(const的路徑& P)從Boost::Filesystem庫。它不僅在Windows中可用。
已棄用:「[此功能可通過Windows XP Service Pack 2(SP2)和Windows Server 2003獲得。它可能會在後續版本的Windows中更改或無法使用。]」 – Technophile 2014-12-22 22:40:11
@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
它似乎目前SHCreateDirectory ** Ex **也被棄用:msdn.microsoft.com/en-us/library/bb762131(v=vs.85).aspx – sergiol 2017-03-10 18:47:58