【发布时间】:2021-01-20 11:03:40
【问题描述】:
您好,我正在使用 C++ 使用代码块进行编程,我只想使用 opendir 两次,并且只有在两个代码块都工作时才会打开,但只有顶部的代码有效,底部的无效。
请有人帮助我一次只有一个目录在工作:
我想要一个 DIR 工作并给我价值以深入到另一个 Dir 并获取价值。
int main()
{ std::string EmployeeNumbr[1000];
std::string DocumentName[1000];
std::string Path = "C:\\EmpFiles\\";
int f;
int j;
DIR *dir;
struct dirent * file;
【问题讨论】:
-
您是如何确定底部代码块不“工作”的?预期和实际行为是什么?您是否启用了编译器警告?你的编译器应该告诉你
f和j正在使用未初始化。 -
您还应该使用更安全的 C++ 数据结构,例如向量和 std::filesystem API。
-
我一个一个地使用两个 Dir,当只将最上面的一个放在一起时,它们是分开工作的。请注意,有两个 Dir,并且都从 windows 复制目录。
-
所有这些都已经打包到
std::filesystem中,为iterate over directory entries 提供标准化的方式,甚至可以做到recursively。如果您确实想使用opendir、readdir和closedir,请将它们打包成一个类以便于使用:example