gpt4 book ai didi

C++ - FindFirstFile 的一个简单例子有问题

转载 作者:搜寻专家 更新时间:2023-10-30 23:56:58 33 4
gpt4 key购买 nike

我正在使用以下超 super 简单代码列出目录中的所有文件(Windows 8.1、Visual Studio Express 2013、C++):

#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>

#include <limits>
#include <cstdio>
#include <iostream>
#include <fstream>
#include <bitset>

#include <windows.h>
#include <tchar.h>
#include <stdio.h>


using namespace std;


void get_file_list(string DATA_DIR)
{
HANDLE hFind;
WIN32_FIND_DATA data;

hFind = FindFirstFile(LPCWSTR(DATA_DIR.c_str()), &data);

if (hFind != INVALID_HANDLE_VALUE) {
do {
printf("%s\n", data.cFileName);
} while (FindNextFile(hFind, &data));
FindClose(hFind);
}
}

int main(int argc, char** argv)
{

string DATA_DIR = "D:\\drobpox\\Dropbox\\BinaryDescriptors\\LFW\\DATA\\*.*";
//string DATA_DIR = "c:\\Users\\GilLevi\\Downloads\\GraphsSURF\\GraphsSURF\\bark\\*.jpg";
string OUT_DIR = "D:\\drobpox\\Dropbox\\BinaryDescriptors\\LFW\\LATCH_TXT_FILES\\LATCH8";


get_file_list(DATA_DIR);

}

但是,我的“hFind”总是等于“INVALID_HANDLE_VALUE”。我仔细检查了路径并尝试了各种不同的路径。

可能是因为我正在运行 64 位应用程序并使用 WIN32_FIND_DATA?

提前致谢,吉尔

最佳答案

将字符串转换为宽字符串需要分配内存并使用字符串转换函数。如果您不想更改函数,最简单的解决方案可能是使用 FindFirstFile 的非 unicode 版本,方法是将 A 添加到函数名和结构中;

WIN32_FIND_DATAA data;

hFind = FindFirstFileA(DATA_DIR.c_str(), &data);

关于C++ - FindFirstFile 的一个简单例子有问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26475540/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com