我试图将所有文件名都放入数组中。但是在读完所有文件名后,数组只有最后一个文件名;
child-select
我在此代码中遇到了什么问题.. 提前谢谢..
答案 0 :(得分:3)
LPCWSTR filenames[30];
上面是一个字符数组。它不是一个字符串数组。它也太短,不能包含MAX_PATH
长的文件名。
使用wchar_t **buf;
创建字符串数组,或使用std::vector
和std::string
。
如果文件句柄无效,请不要关闭它。
请勿使用TCHAR
,除非它是某些家庭作业的一部分。只需使用wchar_t
for Windows。
#include <Windows.h>
#include <iostream>
#include <vector>
#include <string>
int main()
{
std::vector<std::wstring> vec;
wchar_t *directory = L"D:/*.*";
WIN32_FIND_DATA ffd;
HANDLE handle = FindFirstFile(directory, &ffd);
if (handle != INVALID_HANDLE_VALUE)
{
do {
vec.push_back(ffd.cFileName);
} while (FindNextFile(handle, &ffd));
FindClose(handle);
}
else
{
OutputDebugString(L"Nothing to display \n");
}
for (unsigned int i = 0; i < vec.size(); i++)
{
OutputDebugString(vec[i].c_str());
OutputDebugString(L"\n");
}
getchar();
return 0;
}