【发布时间】:2015-02-28 23:40:48
【问题描述】:
我正在开发一个程序,该程序需要我在多个点将我的 C++ 项目的子目录的内容导入vector<string>。假设项目目录名为root\,我要扫描的目录是root\userFiles。此文件夹仅包含其他文件,没有其他子文件夹。
但是诀窍是我受到限制,我不能使用任何 boost、dirent.h 头文件。只是基本的。
我能想出的一个解决方案是使用命令system( "dir /b * > userFiles/fileList.txt" );,然后通过读取该文件并将其导入向量来过滤结果。
我的问题是我如何“cd”到那个文件夹,在那个文件夹中运行那个命令,然后退出到根文件夹..
我已经尝试使用system("chdir userFiles/")command,但我仍然可以获取根文件夹中的所有文件。
任何帮助将不胜感激。
【问题讨论】:
-
如果您使用
chdir(或_chdir,它可能在Windows下)首先移动到另一个目录,然后运行system,它会按您的预期工作。否则,有很多问题很好的答案描述了您如何在此处实际获取目录的文件名。 -
正如我在问题中指定的那样。
chdir似乎不起作用。我得到了整个根文件夹中所有文件的列表。至于答案,大多数都要求我使用某种我无法使用的第三方头文件。 -
我假设您使用的是“windows”,在这种情况下您应该可以使用
<windows.h>对吗?如果你不能使用windows.h,那么我会使用 fstream 来构建一个包含"cd directory-you-want\ndir /b"的批处理文件。 -
我不能用
windows.h哈哈。幸运的是,我已经找到了一种在同一个系统命令中运行所有这些命令的方法。chdir userFiles && dir /b * > fileList.txt && chdir ../。奇迹般有效。非常感谢您的帮助:)
标签: c++ filesystems