文件名匹配查找
来源:互联网 发布:linux 卸载jdk1.7 编辑:程序博客网 时间:2024/05/22 16:59
/* fn_compare.hpp sdragonx 2015-02-25 14:32:54*/#ifndef FN_COMPARE_HPP_20150225143254#define FN_COMPARE_HPP_20150225143254#include <string>#define _CGL_BEGIN cgl{#define _CGL_END }#define cstring std::basic_string_CGL_BEGIN/* 模糊查找文件名matching 例: bool b = fn_compare("abc.txt", "a?c.*"); sdragonx 2010-09-20 16:01*/template<typename _char_t>bool fn_compare(const cstring<_char_t>& fname, const cstring<_char_t>& findstr){//const static cstring<_char_t> mark = "*?";_char_t mark[4] = { '*', '?' };if(fname.empty() || findstr.empty()) {return false; }if(findstr.find_first_of(mark) == cstring<_char_t>::npos) { return fname.find(findstr) != cstring<_char_t>::npos; } else { size_t n = 0; for(size_t i = 0; i<findstr.size(); ) {if(findstr[i] == '*'){i = findstr.find_first_not_of(mark, i);if(i == cstring<_char_t>::npos){return true;}n = fname.find(findstr[i], n);if(n == cstring<_char_t>::npos){return false;} } else if(findstr[i] == '?') { ++n; ++i; } else {//while(mark.find(findstr[i]) == cstring<_char_t>::npos)while(findstr[i] != '*' && findstr[i] != '?'){if(!findstr[i]){return true;}else if(fname[n++] != findstr[i++]){ return false;}} } } return !(n < fname.size()); }}_CGL_END#endif //FN_COMPARE_HPP_20150225143254
0 0
- 文件名匹配查找
- linux grep 查找 匹配 内容的文件 且 输出 文件名
- 文件名通配符匹配算法
- 文件名匹配搜索
- java匹配文件名
- ass文件名的匹配
- 文件名匹配-动态规划
- 正册表达式匹配文件名
- 通过文件名查找法
- 文件名查找指令find
- 文件名匹配/输出重定向
- Java: 正则表达式匹配文件名
- nginx正则表达式匹配文件名
- nginx正则表达式匹配文件名
- python正则匹配目录、文件名
- js正则匹配获取文件名
- 正则表达式,匹配文件名类型
- 正则表达式匹配.avi文件名
- 开源项目Meizhi学习笔记--工具类的收集
- 任意数据长度的bitset,以及按位读写数据的函数
- 像写文章一样使用 Kotlin
- c++ 字符串分割函数stringsplit
- 235. Lowest Common Ancestor of a Binary Search Tree
- 文件名匹配查找
- SSH免密登录
- LRU Cache -- Lintcode 134
- Java Quene
- 100. Same Tree
- 【video】FLV封装原理
- com.thoughtworks.xstream.io.HierarchicalStreamDriver异常处理
- 手机屏幕拓展设想
- Android ORM框架greenDao3.0使用简介