1 使用C++标准库过滤Windows文件名中的非法字符

在windows系统上有一些字符识别是不能存在于文件名之中的,不然会导致创建文件失败,所以写了一个过滤函数过滤文件名中的非法字符:
代码示例:

template <typename T>
bool MatchInvalidCharPredicate(const T& t)
{
    unsigned char t1 = (unsigned char)t;
    if (t1 <= 0x1F
        || t1 == 0x7F
        || t1 == 0x5C // \
        || t1 == 0x2F // /
        || t1 == 0x3A // :
        || t1 == 0x2A // *
        || t1 == 0x3F // ?
        || t1 == 0x22 // "
        || t1 == 0x3C // <
       || t1 == 0x3E // >
        || t1 == 0x7C // |
        )
    {
        return true;
    }
    return false;
}

template<typename C, class T>
void FilterInvalidFileNameChar(T& c)
{
    std::replace_if(c.begin(), c.end(), MatchInvalidCharPredicate<C>, L'_');
}

void TestFilterInvalidFileNameChar()
{
    std::wstring wss(L"/as中国fasdfas?asdfas*dfa.txt");
    FilterInvalidFileNameChar<wchar_t>(wss);
    std::cout << "======TestFilterInvalidFileNameChar=================" << std::endl;
    std::wcout << Unicode2Ansi(wss.c_str()) << std::endl;
}

如果您觉得对您有帮助,可以请站长喝一杯咖啡哦!

记得在赞赏备注里写上您的昵称

您可在本站资助名单中查看你的打赏记录哦!

支付宝扫一扫

微信扫一扫

金额随意,礼清义重

当前分类随机文章推荐

全站随机文章推荐

关于本站站长 StubbornHuang
C++ – 使用C++标准库过滤Windows文件名中的非法字符-StubbornHuang Blog纵使晴明无雨色,入云深处亦沾衣。