配置
我是macOS的新手,正在尝试解决一个简单的问题。
#include <iostream>
#include <filesystem>
using namespace std;
namespace fs = std::filesystem;
int main(int argc, const char * argv[]) {
for(const auto& p: fs::recursive_directory_iterator("data/"))
cout << p.path() << '\n';
return 0;
}
此代码给我错误(在xcode,clion和cmake上尝试)-uncaught exception of type std::__1::__fs::filesystem::filesystem_error:
filesystem error: in recursive_directory_iterator: No such file or directory [data/]
问题这里的数据文件夹是我手动创建的,也可能是自动创建的。它将在其中生成随机文件(子目录文件也是),我需要所有这些文件的路径和名称。
其他信息
此代码可以很好地工作
#include <fstream>
#include <iostream>
#include <filesystem>
namespace fs = std::filesystem;
int main()
{
fs::create_directories("sandbox/a/b");
std::ofstream("sandbox/file1.txt");
fs::create_symlink("a", "sandbox/syma");
for(auto& p: fs::recursive_directory_iterator("sandbox"))
std::cout << p.path() << '\n';
fs::remove_all("sandbox");
}
最佳答案
我看到三个选择:
Product
-Scheme
-Edit Scheme
,然后在左列中选择Run
目标,切换到Options
并使用Working directory
指向要在其中运行目标可执行文件的目录。这是您的data
目录必须存在的位置,程序才能成功运行。data
目录。for(const auto& p: fs::recursive_directory_iterator("/my/absolute/path/data/"))
与您发布的工作片段的不同之处在于,它相对于XCode的工作目录创建了一个新目录。与
data
旁边的手动创建的main.cpp
目录相反,显然可以找到该目录。
关于c++ - C++ 17 filesystem::recursive_directory_iterator()在Mac上没有此类目录给出错误但在Windows上有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62832280/