HJ19 简单错误记录
描述#
开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。
处理:#
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")
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理