C運行時庫提供的建立目錄的函數_mkdir(),在上級目錄不存在時會建立失敗。因此本身實現了一下建立多級目錄,不管上級目錄是否存在。ios
#include<iostream> #include<vector> #include<io.h> #include<list> #include<direct.h> using namespace std; //獲得文件路徑的目錄 string GetPathDir(string filePath) { string dirPath = filePath; size_t p = filePath.find_last_of('\\'); if (p != -1) { dirPath.erase(p); } return dirPath; } //建立多級目錄 void CreateMultiLevel(string dir) { if (_access(dir.c_str(), 00) == 0) { return; } list <string> dirList; dirList.push_front(dir); string curDir = GetPathDir(dir); while (curDir != dir) { if (_access(curDir.c_str(), 00) == 0) { break; } dirList.push_front(curDir); dir = curDir; curDir = GetPathDir(dir); } for (auto it : dirList) { _mkdir(it.c_str()); } } int main() { string dir = "C:\\a\\b\\c\\d"; CreateMultiLevel(dir); return 0; }