c++ 17 filesystem::recursive_directory_iterator() 在 mac 上给出错误 no such directory 但在 windows 上有效
c++ 17 filesystem::recursive_directory_iterator() gives error no such directory on mac but works on windows
配置
- 苹果操作系统:10.15.5
- xcode: 11.5
- 叮当声:11.0.3
- 项目设置为 c++17
我是 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");
}
我看到三个选项:
在XCode中,转到Product
- Scheme
- Edit Scheme
,然后在左栏中选择Run
目标,切换到 Options
并使用 Working directory
指向您希望目标可执行文件成为 运行 的目录。这是您的 data
目录必须存在的位置,程序才能成功。
找出 XCode 正在使用的实际工作目录。在那里创建 data
目录。
指定绝对路径,如
for(const auto& p: fs::recursive_directory_iterator("/my/absolute/path/data/"))
与您发布的工作片段的区别在于它创建了一个相对于 XCode 的工作目录的新目录。与 main.cpp
.
旁边手动创建的 data
目录相反,很明显可以找到
配置
- 苹果操作系统:10.15.5
- xcode: 11.5
- 叮当声:11.0.3
- 项目设置为 c++17
我是 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");
}
我看到三个选项:
在XCode中,转到
Product
-Scheme
-Edit Scheme
,然后在左栏中选择Run
目标,切换到Options
并使用Working directory
指向您希望目标可执行文件成为 运行 的目录。这是您的data
目录必须存在的位置,程序才能成功。找出 XCode 正在使用的实际工作目录。在那里创建
data
目录。指定绝对路径,如
for(const auto& p: fs::recursive_directory_iterator("/my/absolute/path/data/"))
与您发布的工作片段的区别在于它创建了一个相对于 XCode 的工作目录的新目录。与 main.cpp
.
data
目录相反,很明显可以找到