【发布时间】:2012-01-31 22:02:57
【问题描述】:
我想列出当前目录的所有文件,所以我有这个代码:
int WLoader::listdir(void)
{
WIN32_FIND_DATA data;
std::wstring path(L"*");
std::wstring *name;
HANDLE hFile = FindFirstFile(path.c_str(), &data);
if (hFile == INVALID_HANDLE_VALUE)
return (-1);
while(FindNextFile(hFile, &data) != 0 || GetLastError() != ERROR_NO_MORE_FILES)
{
std::cout << data.cFileName << std::endl;
}
return (0);
}
由于未知原因,我的程序正在显示这个结果:
0029F29C
0029F29C
0029F29C
0029F29C
0029F29C
0029F29C
有人可以帮帮我吗?
【问题讨论】:
-
它似乎正在输出 cFileName 元素的地址指针,而不是它包含的字符串。您是否尝试过只使用 printf() 代替?
-
是的,它适用于 printf,但我需要将 cFileName 转换为字符串,因为我需要它来打开 dll。所以我想如果我不能写正确的文件名,我就不能把正确的名字写成字符串。
-
@NickShaw:这是个糟糕的主意。很明显,他试图流式传输的内容有问题。回到石器时代只会掩盖这个问题,并可能使问题变得更糟。
标签: c++ c windows directory listings