问题标签 [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.
c++ - lexically_normal() 在调用 std::filesystem::canonical() 或 std::filesystem::weakly_canonical() 时是多余的吗?
在这些情况下是否有理由调用 lexically_normal :
我在代码库中看到了这一点,我不确定是否有必要。我假设规范和弱规范不会失败并已经返回规范化路径。
谢谢
c++ - fs::recursive_directory_iterator 异常未处理
我编写了在目录中搜索“.data”文件的代码,当我这样做时,效果很好:
但是当我使用 std::cin 输入相同的目录时,它会抛出未处理的异常错误。像这样的代码:
错误信息是这样的:
Interpol Database.exe 中 0x764640B2 处的未处理异常:Microsoft C++ 异常:内存位置 0x00AFE4B8 处的 std::filesystem::filesystem_error。
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
意味着不需要这样的配置步骤吗?
c++ - 如何将错误返回到 std::filesystem?
例如,这就是我使用 runtime_error 的方式
如何做类似的事情,但从 std :: 文件系统返回错误,我的意思是
我试过这个->
如果没有异常如何返回这样的'e'(我的意思是抛出)
c++ - 如何擦除字符串中的第一个和最后一个字符?
此函数返回一个字符串数组,其中包含文件夹中的文件列表。它看起来像这样:
"folder//xyz.txt"
我怎样才能让它看起来像这样?
folder//xyz.txt
它相同但没有""
。
c++ - 使用 std::filesystem::path 确定某个相对目录是否是绝对路径的一部分
我不知道如何使用 std::filesystem::path 来识别绝对路径是否包含一些相对目录,但仍然没有运气。我有以下代码和平:
在这种情况下,isSubDirectory 应该返回 true。感谢任何帮助。
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 output
或unset output
要求,并尝试了这两种变体。
为什么std::filesystem::remove
行为如此奇怪?
c++ - 获取递归迭代目录相对于指定入口路径的路径
考虑以下文档中的示例std::filesystem::recursive_directory_iterator
:
可能的输出:
我想从输出中删除sandbox/
构造时指定的前缀recursive_directory_iterator
,例如:
我浏览了文档,但找不到任何相关内容。
做一点字符串处理并不是什么大不了的事,但我不喜欢引入一些较低级别的代码,从路径到字符串进行往返。这真的是唯一的镜头吗?
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) 上没有这个问题。
c++ - 从 std::filesystem::directory_iterator() 获取最后一个文件名而不进行迭代?
我正在尝试获取最后一个文件名。下面的代码非常优雅地完成了它。但它正在遍历目录中的所有文件。 是否可以在没有迭代的情况下获得最后一个文件?
已编辑:目录中的文件已经按字母顺序递增。我想选择最新的文件,它肯定是按字母顺序排列的最后一个文件。由于可能有数百万个文件,我试图避免迭代。