如何在 C++ 中执行文件搜索
我刚刚开始学习 C++,目前正在使用代码块。 我想编写一个应用程序,可以搜索目录中的文件(包括其子目录),但我似乎找不到任何好的示例,并且我在某处读到这只能通过像 boost 这样的库来实现。
- 这是真的吗?
- 有没有在没有库的情况下执行此操作的示例?
提前致谢
I just started learning C++ and am currently using codeblocks.
I want to write an application that can search for files in a directory including its subdirs, but I cant seem to find any good examples for this and I've read somewhere that this is only possible through a library like boost.
- Is this true?
- Are there any examples for doing it without library?
Thanks in advance
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
也可以通过操作系统系统调用来使用它,例如 Linux 上的 readdir。 boost(和其他库)将允许您为多个(所有?)操作系统编写可移植代码。
在这里您可以找到详细的示例http://faq。 cprogramming.com/cgi-bin/smartfaq.cgi?answer=1046380353&id=1044780608
It's also possible to use it using OS system calls, readdir on linux for example. boost (and other libraries) will allow you to write portable code for several (all?) OSes.
Here u can find elaborate examples http://faq.cprogramming.com/cgi-bin/smartfaq.cgi?answer=1046380353&id=1044780608
是的,确实如此:标准 C++(C++17 之前)没有用于列出目录内容的 API。
因此,您可以通过库(Boost 或其他)或通过您正在使用的操作系统的本机调用(Windows 上的 FindFirstFile/FindNextFile,Unix 上的 opendir/readdir)来完成此操作。其他答案有示例代码。
但是,如果您刚刚开始学习 C++,那么现在最好不要纠结于这些问题。开始时重点学习标准 C++。编写您想要的应用程序是一项有用的练习,但我会稍微推迟一下,直到您更熟悉标准 C++ 之后。
Yes, it's true: standard C++ (before C++17) does not have APIs for listing the content of a directory.
So you either do it through a library (Boost or others) or through the native calls for the operating system you're using (FindFirstFile/FindNextFile on Windows, opendir/readdir on Unix). Others answers have example code.
But if you just started learning C++ it is probably better to not struggle with these for now. Focus on learning standard C++ for the beginning. Writing the application you had in mind is an useful exercise but I would postpone it a little until after you are more familiar with standard C++.
Boost 不是扫描目录的唯一方法,但它可能是以与平台无关的方式执行此操作的最简单方法 - 即不使用特定于平台的 API(例如 Win32)。
这是一个使用 boost 的简单示例:
Boost isn't the only way of scanning directories but it's probably the easiest way to do it in a platform-neutral way - i.e. without using a platform-specific API (such as Win32).
Here's a simple example using boost:
该脚本用于从系统驱动器收集文件创建和修改日期信息,我们可以搜索任何日期以了解结果,并且所有输出将存储在平面文件中,因此更容易查看日志。在运行此程序之前,请确认输出平面文件(FileList.txt)的读/写权限。
它有助于了解在给定的搜索日期创建/更新的所有文件。大多数恶意软件程序都会尝试注入/影响文件,因此它有助于调试这些受影响的文件。我在Windows平台下使用Borland C++ 5.5版本编写了这个脚本。
请从我的技术博客中找到源代码 - http://www.algonuts.info/how-to-trace-file-creation-and-modification-date-using-c-programming.html
This script is used to collect files creation and modification date information from your system drive, we can search any date to know the results and all output will be stored in a flat file, so its easier to view the log. Before running this program, please confirm the read/write permission for the output flat file (FileList.txt).
It helps to know what all files are created/update on those given search date. Most malware programs try to inject/affect the files, so it helps to debug those affected files. I wrote this script using Borland C++ 5.5 Version under Windows Platform.
Please find the source code from my tech blog - http://www.algonuts.info/how-to-trace-file-creation-and-modification-date-using-c-programming.html