我知道这很可能是重复的。但是,我正在努力获得一个切实可行的答案。
我想做的是列出工作目录中的所有文件夹。以下是我从MS网站(http://msdn.microsoft.com/zh-cn/library/windows/desktop/aa365200(v=vs.85).aspx)改编而成的一些代码
这给出了输出:
Filname:52428
我已经检查了文件夹-我想列出三个文件夹,但我'Vidoe' 'John' 'David'
不确定为什么要打印出上面的结果。
我不想使用Boost-也不想下载任何第三方插件。
int main(int argc, char** argv)
{
HANDLE hFind = INVALID_HANDLE_VALUE;
WIN32_FIND_DATA ffd;
//The Directory where the .exe is run from.
hFind = FindFirstFile(TEXT(".\\Players\\*"), &ffd);
do
{
Sleep(1000);
bool isDirectory = ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY;
if(isDirectory)
{
cout << "DirectoryName: " << *ffd.cFileName << endl;
}
else
{
cout << "FileName: " << *ffd.cFileName << endl;
}
}while(FindNextFile(hFind, &ffd) != 0);
FindClose(hFind);
}
编辑:我没有一个特定的方法,我想要做的是,我只想在目录中输出Folders-我不在乎它是如何完成的。
在 …
*ffd.cFileName
删除*
。
同时删除对的呼叫Sleep
。
还要删除愚蠢的TEXT
宏调用,使用诸如的宽字符串文字L"blah"
。
哦,我忘记了,也请do
用一个while
循环(或一个for
循环)替换该循环,因为不确定FindFirstFile
调用是否会成功。
哦,重要的是,对于debug输出wcout
,请不要使用cout
。后者对Unicode字符串的输出一无所知。但是wcout
可以处理它们。
您得到的输出,
52428
似乎是wchar_t
值0xCCCC,被视为整数cout
,该值表示未初始化的存储,这意味着FindFirstFile
调用失败。
因此,在运行程序时,还要确保当前目录。一个好主意是从命令行运行它。那你确定。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句