查找第一个文件总是返回INVALID_HANDLE_TRUE
Find First File always returns INVALID_HANDLE_TRUE
我正在编写一个c++控制台应用程序,以列出给定目录中的所有文件。我的代码如下,但它总是返回"INVALID_HANDLE_TRUE"。我使用windows.h库并使用win32查找数据和FindFirstFile函数打开目录
谢谢!
#include <iostream>
#include <string>
#include <vector>
#include <windows.h>
using namespace std;
int getDirectory(const char *directory, vector<string> &files)
{
string storage;
WIN32_FIND_DATA fd;
HANDLE h = FindFirstFile((LPCWSTR)directory, &fd);
if (h == INVALID_HANDLE_VALUE)
{
cout << "Invalid handle for: " << directory;
return 0;
}
while(1){
cout << (fd.cFileName) ;
if (FindNextFile(h, &fd) == FALSE)
{
break;
}
}
return 1;
}
int main()
{
vector <string> files;
char *directory;
cout << "Directory: ";
// cin >> directory;
directory ="c:\*.*";
cout << directory << endl;
getDirectory(directory, files);
for (unsigned int i = 0; i< files.size(); i++)
{
cout << files[i] << endl;
}
cin.ignore();
return 0;
}
您的directory
变量类型为const char *
。我怀疑您正在构建为预处理器定义的UNICODE
,这意味着FindFirstFile
实际上是FindFirstFileW
-即它期望const wchar_t *
。
尝试将FindFirstFile
更改为FindFirstFileA
,显式地请求该函数的ANSI变体,该函数将const char *
作为其第一个参数,您不再需要错误的类型转换。
相关文章:
- 如何解决"invalid conversion from 'char' to 'const char*'"
- 如何处理 c++ 中类实现中的"invalid use of non-static data member"?
- <Windows>为什么 std::thread::native_handle 返回类型为"long long unsigned int"的值,而不是 void*(又名 HANDLE)?
- C++ "error: invalid use of void expression"
- 收到错误"invalid use of non-static data member 'stu::n' "
- Poloniex API "Invalid command" c++ libcurl
- C++模板错误:"invalid explicitly-specified argument for template parameter"
- SDL_CreateTextureFromSurface() "Invalid texture"错误?
- C++ "Invalid use of 'this' in non-member function" ,
- protobuf C++ SQLite handle blob data
- 为什么gmp会在这里与"invalid next size"重新定位一起崩溃?
- 继承类时"invalid use of incomplete type ‘class tree_node_t’"
- 为什么我会"Invalid read of size 8"?(瓦尔格林德)
- "fast"或"normal"在"free(): invalid next size (fast)"中是什么意思?
- 如何在Arduino程序中解决"invalid operands of types"?
- C++ libtins "An invalid handle was specified"
- 尝试执行任何需要它的操作时,无法修复 WinAPI 中的"invalid handle"错误
- 在没有 UWP 的情况下从 C++/WinRT 使用 FileOpenPicker 时出现视觉"Invalid window handle"错误
- WSARecv 有时会返回与 IOCP 端口关联的套接字的"invalid handle (error no 6)"。(C++)
- 为什么我在调用 GetThreadTimes 时收到错误"The handle is invalid"?