栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

c++ 之ip+告警统计代码

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

c++ 之ip+告警统计代码

c++ 之ip+告警统计代码

注意:复制excel的内容到txt中时,删除空行,删除excel列名(如’告警ip’,‘告警次数’),只留需要计算的数据
示例 excel中含有告警ip和告警次数两列,需要统计某个ip的告警之和

复制出ip列表excel去重后,复制到iplist.txt里保存(懒得写去重的代码了,_),


把原始数据 ip+告警次数两列一起复制到rawattacklist.txt中保存

运行代码

其它用途如个人总分统计等,是否会报错就随缘吧

iplist.txt

rawattacklist.txt

运行代码

源代码

需要在运行目录下创建iplist.txt存储去重后的ip,rawattacklist.txt存储原始告警情况(ip与告警次数之间,从excel复制出来默认是以tab键分隔的)

#include
#include
#include
#include
using namespace std;

struct Ipstruct
{
	string _ipaddress;
	int _total;
	Ipstruct(string ipaddress = "", int total = 0)
	{
		_ipaddress = ipaddress;
		_total = total;
	}
};

void combine(Ipstruct *iplist,const long long int ipnum,string ip, long long int times);//把次数times计数到ip相同的结构体里

void  showAndSaveresult(const Ipstruct *iplist, const long long ipnum);//输出结构体数组的结果


int main()
{

	
	ifstream ipcount;
	ipcount.open("iplist.txt");
	if (!ipcount.is_open())
	{
		cout << "iplist.txt打开失败" << endl;
		return 0;
	}
	string line="";
	long long int ipnum = 0;
	while (getline(ipcount,line))
	{
		ipnum++;
	}
	ipcount.close();
	//cout << "有" << ipnum << "个ip" << endl;
	//第二部分读取已去重ip
	ifstream ipcount1;
	ipcount1.open("iplist.txt");
	Ipstruct *iplist = new Ipstruct[ipnum];//已经delete了
	for (int i = 0; i < ipnum; i++)
	{
		getline(ipcount1, iplist[i]._ipaddress);
	}
	ipcount1.close();
	

	//第三部分 读取原始ip+次数 的数据,存到结构体数组里
	ifstream rawattacklist;
	rawattacklist.open("rawattacklist.txt");
	string rawline;
	//cout << "原始列表读取情况" << endl;
	while (getline(rawattacklist, rawline))//读取一行 ip+次数
	{
		int Tabindex = 65534;
		string nowip = "";
		long long int nowtimes;
		for (int i = 0; i < rawline.size(); i++)
		{
			if (int(rawline[i]) == 9)//9是tab键的ascii码值,是excel复制出来的两行之间的分隔符
			{
				Tabindex = i;//空格开始的位置
				break;
			}
		}
		//cout << "tab键的位置是" << Tabindex<
	for (int i = 0; i < ipnum; i++)
	{
		if (ip == iplist[i]._ipaddress)
		{
			iplist[i]._total = iplist[i]._total + times;
			//cout << iplist[i]._ipaddress << "当前计数结果为" << iplist[i]._total << endl;
		}
	}
}



void showAndSaveresult(const Ipstruct *iplist, const long long ipnum)//输出结构体数组的结果
{
	ofstream resulttxt;
	resulttxt.open("latestResult.txt");
	cout << "统计结果"<< endl;
	for (int i = 0; i < ipnum; i++)
	{
		cout << iplist[i]._ipaddress << 't' << iplist[i]._total << endl;
		resulttxt << iplist[i]._ipaddress << 't' << iplist[i]._total << endl;
	}
	resulttxt.close();

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/968224.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号