描述
开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
处理:
1、 记录最多8条错误记录,循环记录,对相同的错误记录(净文件名称和行号完全匹配)只记录一条,错误计数增加;
2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;
3、 输入的文件可能带路径,记录文件名称不能带路径。
知识点 字符串
运行时间限制 0M
内存限制 0
输入
一行或多行字符串。每行包括带路径文件名称,行号,以空格隔开。
如:E:\V1R2\product\fpgadrive.c 1325
输出
将所有的记录统计并将结果输出,格式:文件名 代码行数 数目,一个空格隔开,如:
fpgadrive.c 1325 1
样例输入 E:\V1R2\product\fpgadrive.c 1325
样例输出 fpgadrive.c 1325 1
#include<iostream>
#include<queue>
#include<map>
#include<string>
using namespace std;
int main()
{
string s,tmp,line;
map<string,int> imap;
queue<string> sq;
int posleft,posright,len,spaceleft;
while(cin>>s>>line)
{
posleft=s.find_last_of('\\');
s=s.substr(posleft+1); //将文件名求出
len=s.size();
if(len>16)
tmp=s.substr(len-16,16)+" "+line;
else
tmp=s.substr(0,len)+" "+line;
imap[tmp]++;
if(imap[tmp]==1)
sq.push(tmp);
if(sq.size()>8)
//imap.erase(sq.front());问题出在这
sq.pop();
}
while(!sq.empty())
{
cout<<sq.front()<<" "<<imap[sq.front()]<<endl;
sq.pop();
}
//system("pause");
return 0;
}