In C++ geschriebene Testfragen zur Implementierung einer einfachen Fehleraufzeichnungsfunktion

little bottle
Freigeben: 2019-04-24 14:52:05
nach vorne
2296 Leute haben es durchsucht

本篇文章,小编将和大家分享一个有意思的C++笔试题,要求实现简单错误记录的功能,感兴趣的朋友可以了解一下,希望能对你的C++开发学习有所帮助。

题目介绍:

开发一个简单错误记录功能小模块,能够记录出错的代码所在的文件名称和行号。 要求:

1.记录最多8条错误记录,对相同的错误记录(即文件名称和行号完全匹配)只记录一条,错误计数增加;(文件所在的目录不同,文件名和行号相同也要合并);

2.超过16个字符的文件名称,只记录文件的最后有效16个字符;(如果文件名不同,而只是文件名的后16个字符和行号相同,也不要合并);

3.输入的文件可能带路径,记录文件名称(只记录文件名)不能带路径 。

例:

输入:

E:\\linuas\\desktop\\demo.txt 1234

E:\\linuas\\desktop\\demo.doc 1234

E:\\linuas\\desktop\\demo.txt 1234

输出:

demo.txt 1234 2

demo.doc 1234 1

分析:

解决方案里用到了pair(包含两种格式的数据结构)、make_pair(构造pair)、vector(栈)、find(找到字符串中指定字符位置)、erase(删除部分字符串)、substr(截取字符串)等用法,值得记录一下,免得后期学习忘记。解决方案高效而使用,不可多得。

#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
using namespace std;
bool compare(pair<string, int> a, pair<string, int> b) {
    return a.second > b.second;
}
int main(void) {
    string input, file;
    vector<pair<string, int>> errors;
    while (getline(cin, input)) {
        if (input.size() == 0)
            break;
        unsigned int f = input.rfind(&#39;\\&#39;);
        file = input.substr(f + 1);
        errors.push_back(make_pair(file, 1));
        for (int i = 0; i<(errors.size() - 1); i++) {
            if (errors[i].first == file) {
                errors[i].second++;
                errors.pop_back(); break;
            }
        }
    }
    stable_sort(errors.begin(), errors.end(), compare);
    int idx = 0;
    while (idx<8 && idx<errors.size()) {
        string check = errors[idx].first;
        int t = check.find(&#39; &#39;);
        if (t>16)
            errors[idx].first.erase(0, t - 16);
        cout << errors[idx].first << &#39; &#39; << errors[idx].second << endl;
        idx++;
    }
}
Nach dem Login kopieren

结果:

 相关教程:C++视频教程

Das obige ist der detaillierte Inhalt vonIn C++ geschriebene Testfragen zur Implementierung einer einfachen Fehleraufzeichnungsfunktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
c++
Quelle:cnblogs.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!