用通配符i(?)检索文件的问题

hjd2357 2009-10-14 03:14:02

BOOL GetSubFiles(LPCTSTR pszPath)
{

BOOL bRes;
CFileFind finder;

bRes = FALSE;

aFileList.RemoveAll();
BOOL bWorking = finder.FindFile(pszPath);
while (bWorking)
{
bWorking = finder.FindNextFile();
if( !finder.IsDirectory() && !finder.IsDots() ){
cout << finder.GetFileName() <<endl;
}
}

bRes = TRUE;

return bRes;
}


第1个参数,也就是文件名是:`D:\test\ABC????????.txt

D:\test\目录下有:
ABC1234567A.txt
ABC1234567B.txt
ABC1234567C.txt
ABC1234.txt


我想要的结果是:
ABC1234567A.txt
ABC1234567B.txt
ABC1234567C.txt

ABC1234.txt不要。

但是执行的结果却是:
ABC1234567A.txt
ABC1234567B.txt
ABC1234567C.txt
ABC1234.txt

怎么做才能把”ABC1234.txt“忽略掉?





...全文
191 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
hjd2357 2009-10-15
  • 打赏
  • 举报
回复
以为考虑通配符有可能是’*‘,所以不能有文件的长度来处理
hjd2357 2009-10-15
  • 打赏
  • 举报
回复
谁能帮我一下呀?

我的目的就是完全匹配。有8个‘?',检索出来的结果就是ABC+8个字符的文件。
文件名ABC后面小于8个字符的不要
赵4老师 2009-10-14
  • 打赏
  • 举报
回复
检查返回的文件名长度,如果不是15,就抛弃,不处理。
hjd2357 2009-10-14
  • 打赏
  • 举报
回复
上面的都不行。
通配符有可能是”*“所以判断一下文件名长度不行。
ABC1234.txt是我随便写的一个数据,谁知道目录下是什么东西。所以[检查文件名,如果是ABC1234.txt,就抛弃,不处理。]也不行。
lsldd 2009-10-14
  • 打赏
  • 举报
回复
最简单的办法是判断一下文件名长度...
老邓 2009-10-14
  • 打赏
  • 举报
回复
检查文件名,如果是ABC1234.txt,就抛弃,不处理。

64,644

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧