如果我使用像absolute()这样的函数,我总是得到一个包含引号的路径。在文件系统函数中有没有办法删除这个引号,使其能够与例如一起使用std::ifstream?fs::pathp2{"./test/hallo.txt"};std::cout返回:"/home/bla/blub/./test/hallo.txt"我需要/home/bla/blub/./test/hallo.txt相反。手动做是没有问题的,但是我想问下文件系统lib里面有没有方法。 最佳答案 std::operator规定如下:Performsstreaminput
首先,很难想出一个标题,它有点模棱两可,但是哦,好吧。好吧,我有一个混合的c++和asm引导加载程序。我可以将它复制到我的mbr上并运行它。我遇到的唯一问题是mbr非常小。我假设它的目的是只调用驱动器上其他地方编写的外部代码。我的问题是,我不确定如何访问它。我的意思是我可以把数据放在那里,我只是不知道如何以编程方式访问该数据,因为本质上驱动器不会有“文件系统”,只有任意代码。我在网上搜索过,但真正的底层开发教程似乎很少。如果有的话,我什至准备好使用C++库。 最佳答案 好老BIOScalls,用于个人电脑。如果您的主板不是PC-您需
我正在用SDL启动一个程序,它显然需要为文件系统加载资源。我希望程序中的文件调用独立于平台。我最初的想法是定义一个基于系统类型在预处理器中定义的宏(我们称它为PTH路径),然后在使用它的程序中进行文件调用。例如SDL_LoadBMP(PTH("data","images","filename"));将简单地转换为与文件系统相关的内容。如果宏是执行此操作的可接受方式,那么此类宏会是什么样子(我如何检查正在使用的系统,在宏中连接字符串?)如果不是,那么公认的做法是什么? 最佳答案 BoostFilesystemmodule可能是你最好的
我想异步监视文件的任何更改。那就是当文件被修改/删除时,我想在我的程序中有一个回调(可能来自内核)。该文件只是一个纯文本文件。我知道可以使用轮询机制来做到这一点,但我正在寻找一种基于事件的解决方案。我阅读了有关inotify的信息,但看起来它需要修补我的内核。如果解决方案符合POSIX标准,那就更好了。 最佳答案 Inotify早在2005年就被合并到Linux内核中,所以除非您使用的是非常的旧系统,否则您应该能够开箱即用。我认为不存在针对此的POSIX兼容解决方案。MacOSX有FSEvents.同时检查manpage用于inot
我需要获取文件夹中子文件夹的所有路径(使用WinAPI和C++。)到目前为止,我找到的唯一解决方案是递归调用FindFirstFile/FindNextFile但是在具有更深层次结构的文件夹上执行此操作需要花费大量时间。所以我想知道,只是为了获取文件夹名称,是否有更快的方法? 最佳答案 如果你真的只需要子文件夹,你应该能够使用FindFirstFileExsearchoptions过滤掉非目录。文档建议这只是一个建议标志,但您的文件系统可能支持此优化-试一试。FindExSearchLimitToDirectoriesThisisa
我有一个简单的程序,旨在存储一组C++17std::filesystem::path对象。因为有一个std::filesystem::hash_value那是标准的一部分,为什么我不必提供自己的std::hash就无法编译这段代码??当我使用gcc8.1.1作为g++-std=c++17-NO_HASH=1hashtest.cpp-ohashtest-lstdc++fs编译和链接时包括我的哈希函数,一切都运行完美。但是,如果我将其更改为-NO_HASH=0,我收到一长串错误消息,其中最关键的一条是:usr/include/c++/8/bits/hashtable.h:195:21:er
我有带FAT32和NTFS分区的HDD(比如1TB),我不知道上面存储了哪些文件,但在需要时我想快速访问大文件,比如超过500MB。我不想扫描我的整个硬盘,因为它非常耗时。我需要快速的结果。我想知道是否有任何我可以直接调用的NTFS/FAT32API-我的意思是如果它们有一些关于存储文件的元数据那么它会更快。我想用C++和C#编写我的程序。编辑如果扫描HDD是唯一的选择,那么我能做些什么来确保最佳性能。比如-我可以跳过扫描系统文件夹,因为我只对用户数据感兴趣。 最佳答案 如果您愿意自己做一些很多的额外工作来加快速度,您也许能够完成一
本质上,我需要实现一个程序来充当用户空间文件系统,它实现非常简单的操作,例如查看磁盘上的内容、将文件复制到本地文件系统或从本地文件系统复制文件到我的文件系统(包含在一个名为“disk01”的文件并从我的文件系统中删除文件。我基本上是在寻找一个跳板或一些关于我可以从哪里开始的提示,因为我不确定如何创建我自己的“磁盘”并将其他文件放入其中,这是一项家庭作业。只是一个正在寻找方向的C++学生。编辑:我知道这个概念已经在多个不同的地方使用,例如“VFS”或虚拟文件系统,有点像zip文件(您只能通过可以处理zip文件的程序查看内容)。我基本上是在尝试编写自己的程序,类似于zip或winrar或其
我正在开始一个新项目,需要选择一个构建系统。我讨厌必须手动将每个C++源文件添加到我的构建规则中,因为这种事情应该在2016年之前实现自动化,并且在重构时会导致额外的繁忙工作(重命名头文件中的类、源文件和构建系统文件...)。当我看到这篇文章时,我开始使用CMake递归文件通配:SpecifysourcefilesgloballywithGLOB?这表明globbing是邪恶的,因为CMake使用两个阶段进行构建(cmake和make),而在正常使用中用户只重新运行第二阶段(make)。乍一看,Bazel还允许文件通配。与Bazel一起使用是邪恶的吗?在代码库上运行find这样的扩展问
我找到了这个页面,描述了c++14和c++17之间的变化:https://isocpp.org/files/papers/p0636r0.html...它链接到此页面,该页面描述了建议的文件系统更改:http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0218r0.html我浏览了一下。标准的措辞有细微的变化,但我看到的唯一代码变化是namespace变化,删除了“实验”和“v1”部分,因此“std::experimental::filesystem::v1”变成了“std::filesystem”",这是预期的。据我所知,