当我尝试调用 CFileFind.FindFile(_T("D://Folder//*.txt"))
时,当唯一的文件是“foobar.txta”时,该方法返回 true .
但是,我不希望文件 foobar.txta 包含在查找结果中。我该怎么做呢?可能通过使用其他方法或其他方法?我是 C++ 的新手 :))
注意:如果扩展名小于 3,则此问题似乎不会发生,例如,如果过滤器为“*.tx”且文件为“foobar.txt”,该方法仍(正确)返回 false。 此外,该问题似乎已报告 here但似乎我需要付费才能看到解决方案
最佳答案
这似乎是 CFindFile(或 Win32 API FindFirstFile)中的错误。但是您可以稍后通过调用 CFindFile::GetFileName 来确定真正的扩展名:
CFindFile finder;
BOOL bWorking = finder.FindFile(L"*.txt");
while (bWorking)
{
bWorking = finder.FindNextFile();
if (finder.GetFileName().Right(finder.GetFileName().ReverseFind(L'.')) != L".txt")
// the file extension is not .txt
}
关于c++ - 如何避免文件扩展名超过三个字符的 CFileFind 误报?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12578065/