c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
c++ 17 filesystem::recursive_directory_iterator() gives error no such directory on mac but works on windows
配置
- macOS: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/]
ISSUE
此处的数据文件夹由我手动创建或在一段时间内自动创建。随机文件将在其中生成(子目录文件也(,我需要所有这些文件的路径和名称。
附加信息
此代码运行良好
#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
目录相反。
相关文章:
- c++17文件系统::recursive_directory迭代器()在mac上没有给出这样的目录,但在windows上
- 分段 Linux Ubuntu 中的 g++ 错误,但在 Windows 中的 g++/MingW 中,在 C++ 中打
- QDialog 不能在 Windows 上退出,但在 MacOS 上不能退出/
- Makefile在Linux中工作,但在Windows下不起作用,在子目录中找不到文件
- C++代码在 Linux 上按预期工作,但在 Windows 上则不然
- 简单的文本文件格式化在linux下崩溃,但在Windows中很好
- cmake cuda在Windows上单独的编译静态LIB链接错误,但在Ubuntu上没有
- strcpy 在 Windows 上编译,但在 Linux 上不编译
- 在 Windows 上编译错误 C2131 和 C3863,但在 Linux 上不编译错误
- pthread在Windows中比串行快,但在Linux中比串行慢
- Qt C++macOS问题。我正在使用函数 .find( "a word") 在多集中搜索单词,它适用于 Windows 但不适用于 mac
- strcat 3 char从char []到char *在Windows上工作,但在Cygwin中给出了细分故障
- FCGX_GetParam REQUEST_METHOD可以在Windows中使用,但在Linux中返回NULL
- 为什么我的文件/目录操作在Windows上工作正常,但在Linux上不能
- 我的程序在Windows机器上崩溃了,但在Linux上运行良好
- 在Windows 7下可以从C#调用C DLL,但在Windows 10下失败
- Ostream Tellp在Windows上失败,但在Linux上没有失败
- 枚举在Windows上具有意想不到的价值,但在Linux上没有
- 唯一的字符代码在 Linux 中运行时不起作用,但在 Windows (C++) 中很好
- 我的程序在Windows上使用MSVC和G 编译器运行,但在Linux上不运行