描述
开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
处理:
1、 记录最多8条错误记录,循环记录,最后只用输出最后出现的八条错误记录。对相同的错误记录只记录一条,但是错误计数增加。最后一个斜杠后面的带后缀名的部分(保留最后16位)和行号完全匹配的记录才做算是“相同”的错误记录。
2、 超过16个字符的文件名称,只记录文件的最后有效16个字符;
3、 输入的文件可能带路径,记录文件名称不能带路径。也就是说,哪怕不同路径下的文件,如果它们的名字的后16个字符相同,也被视为相同的错误记录
4、循环记录时,只以第一次出现的顺序为准,后面重复的不会更新它的出现时间,仍以第一次为准
代码:
#include <iostream>
#include <string>
#include <deque>
#include <map>
using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::map;
using std::deque;
int main() {
string str;
map<string, int> result;
deque<string> deq;
while (getline(cin, str)) {
str = str.substr(str.find_last_of('\\') + 1);
int pos = str.find_last_of(' ');
if ( pos > 16) {
str = str.substr(pos - 16);
}
if (result.find(str) == result.end()) deq.push_back(str);
++result[str];
if (deq.size() > 8) deq.pop_front();
}
for (auto x : deq) {
cout << x << " " << result[x] << endl;
}
return 0;
}
// 64 位输出请用 printf("%lld")
标签:std,错误,记录,HJ19,deq,16,str,using
From: https://www.cnblogs.com/lihaoxiang/p/18121188