过滤非法字符 三

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

实现文件:

#include "stdafx.h"

#include <string>

#include <vector>

#include <algorithm>

#include <functional>

#include "WordLib.h"

#include "_string.h"

namespace WordLib{

typedef std::basic_string<char, ChatTraintsEx> __String;

typedef std::vector<__String> __WordList;

static const char* __strWordLib[] = {

"***",

"***",

"***",

"**** ",

"**** you",

"script"

};

static __WordList __wordList;

static __String __nullStr = " ";

void __InitWordList()

{

if(__wordList.size() != 0)

return ;

for(size_t i = 0; i < sizeof(__strWordLib) / sizeof(const char*); ++i)

__wordList.push_back(__strWordLib[i]);

std::sort(__wordList.begin(), __wordList.end());

}

bool _FLYINGMAGIC_2_CUT_WORD IsValid(const char* str)

{

__InitWordList();

if(str != NULL)

{

__String strSrc(str);

__WordList::iterator itEnd = __wordList.end();

for(__WordList::iterator it = __wordList.begin(); it != itEnd; ++it)

{

if(strSrc.find(*it) != -1)

return false;

}

}

return true;

}

bool _FLYINGMAGIC_2_CUT_WORD Filtrate(char* dst, size_t len, const char* src)

{

__InitWordList();

bool bRet = false;

if(src != NULL && dst != NULL && strlen(src) <= len)

{

__String strSrc(src);

__WordList::iterator itEnd = __wordList.end();

for(__WordList::iterator it = __wordList.begin(); it != itEnd; ++it)

{

__String::size_type begin = strSrc.find(*it);

if(begin != -1)

{

for(__String::size_type t = 0; t < it->size(); ++t)

strSrc[begin + t] = ' ';

// strSrc.assign(__nullStr, begin, it->size());

bRet = true;

}

}

strcpy(dst, strSrc.c_str());

}

return bRet;

}

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航