【发布时间】:2017-05-15 06:07:14
【问题描述】:
我有这段代码,它会显示包含目录本身而不是其内容的文件夹。我想显示它的内容。我不想使用 boost::filesystem。
我该如何解决这个问题?
代码:
#include <windows.h>
#include <iostream>
int main()
{
WIN32_FIND_DATA data;
HANDLE hFind = FindFirstFile("C:\\semester2", &data); // DIRECTORY
if ( hFind != INVALID_HANDLE_VALUE ) {
do {
std::cout << data.cFileName << std::endl;
} while (FindNextFile(hFind, &data));
FindClose(hFind);
}
}
输出:
semester2
【问题讨论】:
-
@RawN 好吧,不是真的,但它给了我一个想法!现在它正在工作!谢谢! :)
-
旁注:您使用的是窄字符文字和编译时选择的字符宽度 API。现代构建环境倾向于默认为 Unicode 构建,这将导致此问题。我强烈建议在任何地方使用明确的 Unicode 类型和 API(将
W后缀添加到WIN32_FIND_DATA、FindFirstFile和FindNextFile、L前缀到路径文字,将std::cout替换为std::wcout)或始终使用TCHARs(添加#include <tchar.h>,使字符串文字_T("C:\\semester2"),并有条件地将std::tcout别名为std::cout/std::wcout视情况而定)。
标签: c++ windows winapi directory-listing