C++ 遍历文件夹下文件 win32+x64环境下
win32环境下使用 struct _finddata_t和x86环境下使用struct _finddata_t,代码不一样,别问我咋知道的,都是眼泪呀
在win32环境下将程序调通,然后将环境切为x64,报错:
不调试,直接运行报错
win32环境下
#include <stdio.h>
#include <io.h>
#include <string>
int main()
{
//目标文件夹路径
std::string inPath = "F:\\dataset11_9\\divide\\4\\*.jpg";//遍历文件夹下的所有.jpg文件
//用于查找的句柄
long handle;
struct _finddata_t fileinfo;
//第一次查找
handle = _findfirst(inPath.c_str(), &fileinfo);
if (handle == -1)
return -1;
do
{
//找到的文件的文件名
printf("%s\n", fileinfo.name);
} while (!_findnext(handle, &fileinfo));
_findclose(handle);
system("pause");
return 0;
}
x64环境下
#include <iostream>
#include <stdio.h>
#include <io.h>
#include <string>
#include <vector>
int main()
{
struct __finddata64_t filefind;
std::string path = "F:\\dataset11_9\\divide\\4";
std::string curr = path + "\\*.*";
std::vector<std::string>Folder;
__int64 handle = _findfirst64(curr.c_str(), &filefind);
if (handle == -1) return 0;
//成功返回0,否则返回-1
while (0 == _findnext64(handle, &filefind))
{
if (0 == std::strcmp(filefind.name, ".."))
{
continue;
}
//if (_A_SUBDIR & filefind.attrib)
//{
std::string subfolder = path + "\\" + filefind.name;
//std::cout << subfolder << std::endl;
Folder.push_back(subfolder);
//}
}
_findclose(handle);
for (int i = 0; i < Folder.size(); i++)
{
std::cout << Folder[i] << std::endl;
}
return 0;
}
结果:
代码记不住从哪扒的了,反正感谢那些作者吧