#include <iostream>
#include <string>
#include <windows.h>
int main() {
WIN32_FIND_DATA fileData;
HANDLE hFind;
std::string path = "C:\\your_directory\\*"; // 替换为你的目录路径
hFind = FindFirstFile(path.c_str(), &fileData);
if (hFind != INVALID_HANDLE_VALUE) {
do {
std::cout << fileData.cFileName << std::endl;
} while (FindNextFile(hFind, &fileData));
FindClose(hFind);
}
return 0;
}
腾讯元宝的回答:
这个错误通常发生在 Windows 编程中,当你尝试将 const char*
(ANSI 字符串)传递给需要 LPCWSTR
(宽字符字符串,即 const wchar_t*
)的函数时。以下是解决方案:
使用宽字符字符串(推荐)
如果可能,直接使用宽字符字符串(LPCWSTR
或 const wchar_t*
):
HANDLE OpenRS232(const wchar_t* ComName, DWORD BaudRate) {
ComHandle = CreateFileW(ComName, GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
}
调用时使用 L"COM1"
前缀:
RS232Handle = OpenRS232(L"COM1", 9600);
对应我这个问题,解决如下:
hFind = FindFirstFile((const wchar_t *)path.c_str(), &fileData);