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文件名中的非法字符
原文链接:https://www.stubbornhuang.com/632/
发布于:2020年01月09日 17:32:04
修改于:2023年06月26日 22:46:47
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
50