问题标签 [std-filesystem]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
102 浏览

c++ - lexically_normal() 在调用 std::filesystem::canonical() 或 std::filesystem::weakly_canonical() 时是多余的吗?

在这些情况下是否有理由调用 lexically_normal :

我在代码库中看到了这一点,我不确定是否有必要。我假设规范和弱规范不会失败并已经返回规范化路径。

谢谢

0 投票
1 回答
319 浏览

c++ - fs::recursive_directory_iterator 异常未处理

我编写了在目录中搜索“.data”文件的代码,当我这样做时,效果很好:

但是当我使用 std::cin 输入相同的目录时,它会抛出未处理的异常错误。像这样的代码:

错误信息是这样的:

Interpol Database.exe 中 0x764640B2 处的未处理异常:Microsoft C++ 异常:内存位置 0x00AFE4B8 处的 std::filesystem::filesystem_error。

0 投票
1 回答
210 浏览

c++ - 如何检测OSX 上的可用性?

我想做一些跨平台的、可选的使用std::filesystem和使用的代码,如下所示:

然后我可以通过-std=c++11-std=c++17有或没有对文件系统的支持。

这几乎在任何地方都可以正常工作,但在没有明确目标平台级别集的最近的 OSX 上。这似乎默认为某些较旧的 OSX 并引发编译错误:

错误:“路径”不可用:在 macOS 10.15 中引入
...
Applications/Xcode_11.3.1.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/filesystem:739: 24:
注意:“路径”已在此处明确标记为不可用

那么如果这样的代码编译,我应该如何在 OSX 上处理这个而不依赖于配置检查呢?功能检测宏不是__cpp_lib_filesystem意味着不需要这样的配置步骤吗?

0 投票
2 回答
275 浏览

c++ - 如何将错误返回到 std::filesystem?

例如,这就是我使用 runtime_error 的方式

如何做类似的事情,但从 std :: 文件系统返回错误,我的意思是

我试过这个->

如果没有异常如何返回这样的'e'(我的意思是抛出)

0 投票
1 回答
99 浏览

c++ - 如何擦除字符串中的第一个和最后一个字符?

此函数返回一个字符串数组,其中包含文件夹中的文件列表。它看起来像这样:

"folder//xyz.txt"

我怎样才能让它看起来像这样?

folder//xyz.txt

它相同但没有""

0 投票
1 回答
75 浏览

c++ - 使用 std::filesystem::path 确定某个相对目录是否是绝对路径的一部分

我不知道如何使用 std::filesystem::path 来识别绝对路径是否包含一些相对目录,但仍然没有运气。我有以下代码和平:

在这种情况下,isSubDirectory 应该返回 true。感谢任何帮助。

0 投票
1 回答
463 浏览

c++ - Gnuplot 和 std::filesystem::remove

我正在尝试使用来自 C++ 应用程序的 gnuplot,gcc 版本 9.3.0(Ubuntu 9.3.0-17ubuntu1~20.04)。我遇到了关于打印到文件的奇怪行为。

因此,可重现的示例是:

输出是(很奇怪):

会发生什么:gnuplot 成功地将有效的 png 文件写入所需的目的地。但是,std::filesystem::remove不会删除文件,返回false并(因此)打印有关成功的神秘消息,错误代码为 0。在解决问题pclose(gp);之前移动行std::filesystem::remove,因此看起来 gnuplot 确实保存了文件。奇怪的是,如果我手动执行相同操作,我的意思是,我启动 gnuplot,发出相同的命令,而不是退出,我可以使用unlink /tmp/1.png. 我知道 gnuplot 的set outputunset output要求,并尝试了这两种变体。

为什么std::filesystem::remove行为如此奇怪?

0 投票
1 回答
60 浏览

c++ - 获取递归迭代目录相对于指定入口路径的路径

考虑以下文档中的示例std::filesystem::recursive_directory_iterator

可能的输出:


我想从输出中删除sandbox/构造时指定的前缀recursive_directory_iterator,例如:

我浏览了文档,但找不到任何相关内容。

做一点字符串处理并不是什么大不了的事,但我不喜欢引入一些较低级别的代码,从路径到字符串进行往返。这真的是唯一的镜头吗?

0 投票
4 回答
198 浏览

c++ - std::filesystem:file_size 给我一个不连贯的值

为了在我的代码中读取文件,我使用 std::filesystem::file_size ( https://en.cppreference.com/w/cpp/filesystem/file_size ) 来获取他的大小。我使用这段代码:

这适用于我需要阅读的大多数文件,但是对于文件(〜3 gigas),我有一个奇怪的问题:

在文档中,我可以阅读The non-throwing overload returns static_cast<std::uintmax_t>(-1) on errors. . 但是值 18446744072617361848 与 不同static_cast<std::uintmax_t>(-1),所以我迷路了....

我的编译器是 mingw32 :

我在 linux (gcc) 上没有这个问题。

0 投票
2 回答
322 浏览

c++ - 从 std::filesystem::directory_iterator() 获取最后一个文件名而不进行迭代?

我正在尝试获取最后一个文件名。下面的代码非常优雅地完成了它。但它正在遍历目录中的所有文件。 是否可以在没有迭代的情况下获得最后一个文件?

已编辑:目录中的文件已经按字母顺序递增。我想选择最新的文件,它肯定是按字母顺序排列的最后一个文件。由于可能有数百万个文件,我试图避免迭代。