c++敏感词过滤

敏感词.h文件

#pragma once

#ifndef __KAIHUA_SENSITIVE__
#define __KAIHUA_SENSITIVE__
#include <map>
#include <iostream>
#include <string>
#include <fstream>
using namespace std;


class Sensitive
{
map<string,char> ctr;
public:




//==========================================================
// 功能:导入敏感词库 //
// 参数:需要导入敏感词库的,文件txt的名字 //
//==========================================================


void load( const char* filePath );


//==========================================================
// 功能:敏感词过滤 //
// 需要过滤的字符串 //
//==========================================================
string replace(string str);


Sensitive(void);
~Sensitive(void);
};


#endif


.cpp

#include "Sensitive.h"




Sensitive::Sensitive(void)
{
}




Sensitive::~Sensitive(void)
{
}


void Sensitive::load( const char* filePath )
{
char str[128] = {};
//map<string,char>ctr;
ifstream f;
f.open(filePath,ios::in);
int i=0;
while(EOF != (str[i] = f.get()))
{
string str1;
if (str[i] == '\n')
{
str1.assign(str,i);
ctr.insert(pair<string,char>(str1,'a'));
i = 0;
}
else 
i++;
}
}


string Sensitive::replace( string str)
{
int len = str.size();
string sContent;
for (int i=0;i<len;i++)
{
sContent = str.substr(0,len-i);
int a = ctr.count(sContent);
if( 0 != a)
{
for (int j=0;j<len-i;j++) str[j] = '*';
break;
}else
{
for (int j=2;j<10;j++)
{
sContent = str.substr(i,j);
int a = ctr.count(sContent);
if( 0 != a)
{
for (int z=0;z<j;z++) str[i+z] = '*';
break;
}
}
}


}
return str;
}


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值