【发布时间】:2018-04-22 19:09:15
【问题描述】:
我需要制作一个程序,该程序将输出与可执行文件位于同一目录中的所有文件夹和文件夹大小,当您通过命令提示符执行它时,它应该显示与可执行文件位于同一目录中的所有文件夹例如,它。 c++程序完成的可执行文件将能够移动到documents文件夹中,当您通过命令提示符执行文件时,将输出documents文件夹中的所有文件夹。我所知道的是,我可能必须制作一个向量或某种容器来保存文件夹名称和文件夹大小并使用范围 for 循环输出它,还有命令行参数可用于修改输出信息,例如文件夹按字母顺序排序等等。我应该能够做到这一点,我只是不知道如何在 C++ 中提取文件夹信息。如果我知道如何准确获取文件夹名称和大小,我就可以开始做剩下的事情了。任何有关如何执行此操作的帮助将不胜感激。
【问题讨论】:
-
虽然 C++ 可以提供容器来保存文件夹(目录)名称,但 C++ 没有可使用的本机目录处理函数(直到 C++17)。相反,您将使用结构类型为
dirent的Copendir和readdir函数。手册页提供了有关如何获取目录名称的最少示例。如果您将它们存储在字符串向量中,那么您将拥有所有正常的排序和访问功能。 -
查看此内容:en.cppreference.com/w/cpp/filesystem 如果您在此处找不到所需内容,则可能需要操作系统特定的 API。如果您这样做,请使用该信息更新您的问题。 Boost 还有一个文件系统库:boost.org/doc/libs/1_66_0/libs/filesystem/doc/index.htm
-
哦,我在执行此操作时无法使用 3rd 方库。有没有办法在不下载第三方库的情况下做到这一点?
-
请定义第三方库。如果您对可能的解决方案有限制,则应将其包含在问题中,以避免人们浪费时间。
-
对不起,我应该早点澄清一下,我之前有点困惑,但现在我相当有信心我应该使用文件系统库。
标签: c++ command-line-arguments directory