QDir::match()返回意外结果:匹配"*.exe"与"path/file.exe"返回false
QDir::match返回false的原因及解决方法
原因
QDir::match() 默认是匹配整个输入字符串,而非仅提取文件名进行匹配。当你传入"path/file.exe"作为第二个参数时,"*.exe"这个通配符会尝试匹配完整路径——它要求字符串以任意字符开头、以.exe结尾,但"path/file.exe"的前缀是path/,不符合该通配规则,因此返回false。
解决方法
可以通过以下几种方式修正:
- 先提取文件名再匹配:
QFileInfo fileInfo("path/file.exe"); bool m = QDir::match("*.exe", fileInfo.fileName());
- 使用适配路径结构的通配符:
bool m = QDir::match("*/*.exe", "path/file.exe");
- 调用指定匹配规则的重载(Qt 5.14及以上版本支持):
bool m = QDir::match(QDir::MatchFileName, "*.exe", "path/file.exe");
内容的提问来源于stack exchange,提问作者Laszlo
相关产品推荐
相关产品推荐

