代码之家  ›  专栏  ›  技术社区  ›  user3362334

std::文件系统::创建目录Visual Studio 2017

  •  -1
  • user3362334  · 技术社区  · 6 年前

    this SO thread 为路径中不存在的每个元素创建一个目录。

    create_directories 我得到一个错误: namespace "std::experimental::filesystem" has no member "create_directories."

    std::experimental::filesystem std::filesystem

    我尝试将projectproperties中的c++版本设置为c++17,方法是将语言标准设置为 ISO C++17 Standard (/std:c++17) ,仍然是相同的错误。

    当我进入文件系统名称空间查看标头时,我看到没有create\u directories函数。

    this path 所有这些类和函数中的类。头文件的位置是: C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.15.26726\include

    我的代码是这样的:

    #include "pch.h"
    #include <fstream>
    
    int main(){
    namespace fs = std::experimental::filesystem; // In C++17 use std::filesystem.
    
    try {
        fs::create_directories("C:\\Program Files\\Test");
    }
    catch (std::exception& e) { // Not using fs::filesystem_error since std::bad_alloc can throw too.
        std::cout << e.what() << std::endl;
    }
    }
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   user3362334    6 年前

    所以,解决办法是加上: #include <experimental/filesystem>

    下面是我的代码现在的样子:

    #include "pch.h"
    #include <fstream>
    #include <experimental/filesystem>
    
    int main(){
    namespace fs = std::experimental::filesystem; // In C++17 use std::filesystem.
    
    try {
        fs::create_directories("C:\\Program Files\\Test");
    }
    catch (std::exception& e) { // Not using fs::filesystem_error since std::bad_alloc can throw too.
        std::cout << e.what() << std::endl;
    }
    }
    

    当我认为我在看文件系统头文件时,我实际上是在看fstream头文件。这就是为什么我找不到我要找的函数。欺骗我的是fstream头还有一个名为 filesystem ,所以我实际上是在看这个(因为visualstudio将我指向了这个头,因为它是我包含的唯一一个包含文件系统名称空间的头)。

    #include <filesystem> std::filesystem 相反。