如何在 CPP 的给定目录中列出 UTF 编码的文件名?
How to list UTF encoded filenames in a given directory in CPP?
我正在尝试获取给定目录中的所有文件,在 Windows 10 下,使用基于 CMake 的 CPP 项目(VS 编译器)。
我不能使用 boost 或其他库。
我正在使用以下功能
string search_path = "D:\*.*";
WIN32_FIND_DATA fd;
HANDLE hFind = ::FindFirstFile(search_path.c_str(), &fd);
if(hFind != INVALID_HANDLE_VALUE)
{
do {
// read all (real) files in current folder
// , delete '!' read other 2 default folder . and ..
if(! (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )
{
printf("%s - ", fd.cFileName);
for (int i = 0; i < 30; ++i)
{
printf("%02x", fd.cFileName[i]);
}
printf("\n");
}
} while(::FindNextFile(hFind, &fd));
::FindClose(hFind);
}
它适用于 ASCII 文件名,但阿拉伯文文件显示为
???? ???? ?????.jpg - 3f3f3f3f203f3f3f3f203f3f3f3f3f2e6a706700746d6c0000696e646f77
欢迎任何指点。
我正在尝试获取给定目录中的所有文件,在 Windows 10 下,使用基于 CMake 的 CPP 项目(VS 编译器)。 我不能使用 boost 或其他库。 我正在使用以下功能
string search_path = "D:\*.*";
WIN32_FIND_DATA fd;
HANDLE hFind = ::FindFirstFile(search_path.c_str(), &fd);
if(hFind != INVALID_HANDLE_VALUE)
{
do {
// read all (real) files in current folder
// , delete '!' read other 2 default folder . and ..
if(! (fd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) )
{
printf("%s - ", fd.cFileName);
for (int i = 0; i < 30; ++i)
{
printf("%02x", fd.cFileName[i]);
}
printf("\n");
}
} while(::FindNextFile(hFind, &fd));
::FindClose(hFind);
}
它适用于 ASCII 文件名,但阿拉伯文文件显示为
???? ???? ?????.jpg - 3f3f3f3f203f3f3f3f203f3f3f3f3f2e6a706700746d6c0000696e646f77
欢迎任何指点。