跨平台创建目录的方式?
有没有办法使用标准的c或c ++库来创建一个目录,包括给定一个绝对路径字符串可能需要的子文件夹?
谢谢
不,但是如果你愿意使用boost:
boost::filesystem::path dir("absolute_path"); boost::filesystem::create_directory(dir);
有人建议将文件系统库添加到基于boost::filesystem
的标准库中。 使用boost::filesystem
和相应的typedef将使您能够在选择的编译器可用时迁移到将来的标准。
使用标准库,你可以在C ++中这样做:
// ASSUMED INCLUDES // #include // required for std::string // #include // required for stat.h // #include // no clue why required -- man pages say so std::string sPath = "/tmp/test"; mode_t nMode = 0733; // UNIX style permissions int nError = 0; #if defined(_WIN32) nError = _mkdir(sPath.c_str()); // can be used on Windows #else nError = mkdir(sPath.c_str(),nMode); // can be used on non-Windows #endif if (nError != 0) { // handle your error here }
是的 ,在C ++ 17中 ,您可以使用filesystem
#include #if __cplusplus < 201703L // If the version of C++ is less than 17 // It was still in the experimental:: namespace namespace fs = std::experimental::filesystem; #else namespace fs = std::filesystem; #endif int main() { // create multiple directories/sub-directories. fs::create_directories("SO/1/2/a"); // create only one directory. fs::create_directory("SO/1/2/b"); // remove the directory "SO/1/2/a". fs::remove("SO/1/2/a"); // remove "SO/2" with all its sub-directories. fs::remove_all("SO/2"); }
注意只使用正斜杠/
您可能需要包含
。