下面是我为您准备的C++获取文件夹下所有文件名的攻略。
步骤1:设置工作目录
为了方便获取文件夹下的文件名,我们需要首先将工作目录切换到所需要遍历的文件夹下。
在C++中,我们可以利用头文件<direct.h>
中的_chdir()
函数来进行目录切换。
#include <direct.h>
#include <iostream>
#include <string>
using namespace std;
int main()
{
string folder_path = "C:\\Users\\ABC\\Desktop\\example_folder";
if (_chdir(folder_path.c_str()) != 0)
{
cout << "Failed to change working directory." << endl;
return -1;
}
else
{
cout << "Changed working directory to " << folder_path << endl;
return 0;
}
}
在上述代码中,首先我们定义了一个字符串变量folder_path
来存储需要遍历的文件夹路径。然后利用_chdir()
函数来尝试切换工作目录。如果切换成功,则返回0;否则返回非零值,并且输出相应错误信息。
步骤2:获取文件夹下的文件名
在设置好工作目录之后,我们需要获取该文件夹下的文件名。
在C++中,我们可以使用头文件<io.h>
中的_findfirst()
和_findnext()
函数来获取文件夹下的文件名。
#include <direct.h>
#include <io.h>
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
string folder_path = "C:\\Users\\ABC\\Desktop\\example_folder";
if (_chdir(folder_path.c_str()) != 0)
{
cout << "Failed to change working directory." << endl;
return -1;
}
else
{
cout << "Changed working directory to " << folder_path << endl;
}
struct _finddata_t file_info;
intptr_t handle;
vector<string> file_list;
handle = _findfirst("*.*", &file_info);
if (handle == -1L)
{
cout << "Failed to find first file." << endl;
return -1;
}
else
{
do
{
// 如果是文件夹,则不处理
if ((file_info.attrib & _A_SUBDIR) == 0)
{
file_list.push_back(file_info.name);
}
} while (_findnext(handle, &file_info) == 0);
_findclose(handle);
cout << "Number of files found: " << file_list.size() << endl;
for (int i = 0; i < file_list.size(); i++)
{
cout << file_list[i] << endl;
}
}
return 0;
}
在上述代码中,首先我们定义了一个字符串变量folder_path
来存储需要遍历的文件夹路径。然后利用_chdir()
函数来尝试切换工作目录。
接着,我们定义了一个变量file_info
来存储文件信息,以及一个intptr_t
类型的句柄handle
来保存搜索的结果。同时我们利用一个vector<string>
类型的file_list
来保存文件名列表。
接着,我们使用_findfirst()
函数来搜索文件夹中的第一个文件,并且保存结果到file_info
中。然后不断使用_findnext()
函数来获取下一个文件的信息,直到搜索结束。每当找到一个文件时,我们检查其是否为文件夹,如果不是则将其文件名保存到file_list
中。最后使用_findclose()
函数关闭搜索。
最后我们输出获取到的文件列表。
示例说明 1
假设我们有一个文件夹example_folder
,里面包含以下文件:
example_folder/
file1.txt
file2.txt
subfolder/
file3.txt
则根据上述代码,我们可以输出以下信息:
Changed working directory to C:\Users\ABC\Desktop\example_folder
Number of files found: 2
file1.txt
file2.txt
根据输出结果,我们可以看到我们成功获取了example_folder
中的两个文件名file1.txt
和file2.txt
。而子文件夹subfolder
中的文件file3.txt
则没有被找到。
示例说明 2
假设我们有一个文件夹example_folder2
,里面包含以下文件:
example_folder2/
file4.txt
则根据上述代码,我们可以输出下列信息:
Changed working directory to C:\Users\ABC\Desktop\example_folder2
Number of files found: 1
file4.txt
根据输出结果,我们可以看到我们成功获取了example_folder2
中的1个文件名file4.txt
。
希望这份攻略对您有帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:利用C++实现获取文件夹下所有文件名 - Python技术站