实现文件:
#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;
}
}
本文地址:http://com.8s8s.com/it/it26443.htm