zoukankan      html  css  js  c++  java
  • 开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。

    // ConsoleApplication10.cpp : 定义控制台应用程序的入口点。
    //

    #include <iostream>
    #include <vector>
    #include <string>
    using namespace std;
    struct ErrordRecord //错误记录
    {
    public:
    	string pathWay;;
    	string fileName;
    	int line;
    	int num;//记录的数目
    };
    
    int main()
    {
    	vector<ErrordRecord *> errordRecords;
    
    	//	while (errordRecords.size()<8)//当记录多余8条是结束程序
    	string pathWay;
    	string fileName;
    	int line;
    	while (cin >> pathWay >> line)
    	{
    
    		fileName = pathWay.substr(pathWay.find_last_of("\") + 1);
    		bool exist = false;//如果记录是否已经存在
    
    
    		for (int i = 0;i < errordRecords.size();++i)
    		{
    			if (fileName == (errordRecords[i]->fileName) && line == (errordRecords[i]->line))
    			{
    				errordRecords[i]->num = (errordRecords[i]->num) + 1;
    				exist = true;
    				break;
    			}
    		}
    		if (exist == false)//记录不存在
    		{
    			ErrordRecord *errordRecord = new ErrordRecord();
    			errordRecord->fileName = fileName;
    			errordRecord->line = line;
    			errordRecord->num = 1;
    			errordRecords.push_back(errordRecord);
    		}
    
    		
    	}
    
    
    	//根据数目多少输出,冒泡排序
    	for (int i = 0;i < errordRecords.size();++i)
    	{
    		for (int j = i + 1;j < errordRecords.size();++j)
    		{
    			if (errordRecords[i]->num < errordRecords[j]->num)
    			{
    				string fileName = errordRecords[i]->fileName;
    				int line = errordRecords[i]->line;
    				int num = errordRecords[i]->num;
    
    				errordRecords[i]->fileName = errordRecords[j]->fileName;
    				errordRecords[i]->line = errordRecords[j]->line;
    				errordRecords[i]->num = errordRecords[j]->num;
    
    				errordRecords[j]->fileName = fileName;
    				errordRecords[j]->line = line;
    				errordRecords[j]->num = num;
    
    			}
    		}
    	}
    
    	//for (int i = 0;i < errordRecords.size();++i)
    	for (int i = 0;i < errordRecords.size() && i < 8;++i)//输出前八条记录
    	{
    		if (errordRecords[i]->fileName.length() > 16)
    		{
    			cout << errordRecords[i]->fileName.substr(fileName.length()-16)
    				<< " " << errordRecords[i]->line << " " << errordRecords[i]->num << " ";
    		}
    		else {
    			cout << errordRecords[i]->fileName << " " << errordRecords[i]->line << " " << errordRecords[i]->num << " ";
    		}
    		
    
    	}
    
    
    	return 0;
    };
  • 相关阅读:
    暑假工作日志——关于51的串口的小问题
    C中怎么利用指针实现一个函数输入一个数组且输出一个数组
    2015.8.5数组与指针练习总结
    2015.8.5关于指针的个人理解
    2015.8.3keil调试遇到的问题
    2015.8.3stm32f4串口调试记录
    quartusII 错误记录
    3/4、事例三、四:透视投影(Perspective)、正射投影(Ortho)
    2、事例二: 三角形的几何变换平移(Translate)、旋转(Scale)、缩放(Rotate)
    1、事例一: 一个三角形、一个正方形(Vertex)
  • 原文地址:https://www.cnblogs.com/wdan2016/p/6420323.html
Copyright © 2011-2022 走看看