作为爱好项目的一部分,我正在 C++ 中编写一个小型 HTTP web 服务器,我需要提供 static 个文件。 但是,我想避免的一个问题是用户输入,例如http://example.com/../passwd 。 为了确保用户不会输入恶意路径,我想检查输入的路径是否在当前父目录中。 我目前的方法 ...
作为爱好项目的一部分,我正在 C++ 中编写一个小型 HTTP web 服务器,我需要提供 static 个文件。 但是,我想避免的一个问题是用户输入,例如http://example.com/../passwd 。 为了确保用户不会输入恶意路径,我想检查输入的路径是否在当前父目录中。 我目前的方法 ...
在 Linux 下: 我正在尝试使用“recursive_directory_iterator”访问文件夹,但它抛出了“权限被拒绝”异常。 以下是给定文件夹的权限: 这意味着“其他人”有 exec,因此应该能够查看和输入“my_subfolder”。 为什么迭代器会抛出异常,因为仍然允许查看? 我怎 ...
我在我的项目中添加了以下 function 模板,用户抱怨它不再在他们的系统上编译:template<typename T> std::size_t removeDuplicates(std::vector<T>& vec) { std::unordered ...
当我偶然发现这个看似未知/无法修复的错误时,我正在使用std::filesystem的recursive_directory_iterator进行一个更大的项目。 我将项目简化到最低限度以重新创建错误。 另一个提问者找到了提供skip_permission_denied选项的解决方案,这对我没有任 ...
我有一个程序,在 Windows 10 上使用 MinGW 编译,我希望这个程序在其他人的计算机上运行,即使他们没有安装 MinGW 或任何 c++ 编译器。 通常,这很容易。 我只包含任何第三方库的 exe 文件和 dll 文件,它确实有效……除非我使用一个特定的 c++ 标准库,即 c+ ...
在我正在处理的代码库(C++ 和 Qt5)中,文件路径大部分时间都作为 QString 参数传递。 在某些情况下,它也是 QDir 和 QString 的组合。 例子: 为了对接口使用更强的类型,我正在考虑以下类型: 字符串 目录 文件 QFileInfo 网址 标准::文 ...
我无法使用 c++ 17 clang 编译这个官方的 cpp 文件系统参考示例: https://en.cppreference.com/w/cpp/filesystem/recursive_directory_iterator 编译器返回: /main.cpp:17:19:错误:二 ...
我的程序应该使用用户指定的路径创建两个文件。 在我开始更改文件系统之前,我需要知道路径是否指向相同的位置,以错误结束。 因为路径来自用户,所以它们应该是非规范的和奇怪的。 例如,它们可以是./dir1/subdir/file和dir2/subdir/../subdir/file ,其中dir2是指 ...
关于std::filesystem::is_regular_file(path) ,cppreference.com说: 检查给定的文件状态或路径是否对应于常规文件 […] 等同于s.type() == file_type::regular 。 例如,在 Linux kernel 中,文件类型在 ...
假设我有一个程序,它从命令行获取输入和 output 目录的路径。 如果 output 目录不存在,我们的程序需要创建它。 我想检查(最好使用std::filesystem )该路径是否有效,然后再将其发送到std::filesystem::create_directory() 。 最好的方法是什么 ...
请参阅下面的代码,然后是下面的错误。 尝试使用 filesystem::copy 以及尝试不同的路径。 没有任何运气。 由于上面列出的问题,我不能在这里写太多,可能是一个简单的格式问题。 话虽这么说,它在我的家用计算机上使用 visual studio 2022 工作,但是使用 VS Code 和 ...
std::filesystem::path似乎没有意识到windows long path magic prefix 。 这是每个设计还是有可以使用的模式/标志/编译器开关/第 3 方库? 铁对于像C:\temp\test.txt这样的路径, root_name是C:和root_path是C:\这 ...
我正在尝试使用 std::filesystem::remove_all() 从我的磁盘中删除完整的 git 存储库克隆 这会引发异常 该文件是只读的。 可以从 windows 资源管理器中毫无问题地删除它。 这在 windows 10 和 mingw g++ v11.2 中。 所以这似乎是 std: ...
我的代码要实现的是在给定文件路径输入和 output 后读取文件名(开关1:同一文件夹下的文件)(开关2:目录下的所有文件名,包括子目录),并且不将文件夹名称存储到向量中(1.png 2.png 3.png 但不是 ChildFolder)。 如果您需要有关文件夹结构的额外信息,请参阅我之前的问题 ...
在 macOS 上使用 C++20 和std::filesystem::recursive_directory_iterator ,此代码: 根据我对文档的理解,应该跳过它无权递归到的目录,在尝试递归到~/Library/Application Support/MobileSync/时遇到错误。 ...
自从我开始使用 C++17 以来,每次我必须开发一个新库时,我都会考虑几种将文件路径传递给公共函数/方法的替代方案。 这些是我通常对这个话题的一些想法: 通过在公共函数中使用std::filesystem::path ,我将向 C++17 添加强依赖。 我的图书馆的消费者需要有一个 C++17 编 ...
我有以下代码:for (const auto& x : std::filesystem::directory_iterator(dir)) { // do stuff with x } dir可能不存在,我想将这种情况视为 dir 为空。 我似乎想不出一个好的选择。 如果我用tr ...
我想使用std::filesystem::recursive_directory_iterator类来创建一个类方法,它遍历所有子目录并处理找到的 xml 文件。 我在互联网上找到的唯一方法是使用这样的 for 循环: 问题是我需要在函数调用之间存储我的迭代器(或至少它指向的位置),因为我一次 ...
std::filesystem::path不提供反向迭代器(即rbegin和rend )是否存在技术原因? 如果我有一个std::filesystem::path用于/a/b/c/b/d/b/e并且我想找到匹配b的第一个组件,我可以使用std::find(p.begin(), p.end(), ...
我正在编写一个 C++ 程序,在该程序中我使用std::filesystem::current_path(working_directory)更改工作目录,其中working_directory是一个字符串。 有没有什么好方法可以在程序稍后将工作目录重置为其原始值? 我知道一种解决方案是在更改工作目 ...