Форум программистов, компьютерный форум CyberForum.ru

Парсер лога с использованием boost::regex - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ ввод двумерного массива из файла http://www.cyberforum.ru/cpp-beginners/thread381519.html
как осуществить ввод двумерного массива из файла? как должны размещаться значения в файле? вот такие два вопросика :) заранее всем откликнувшимся спасибо большое:friends:
C++ Помогите написать код программы с использованием функции!!! Реализовать функцию, которая переписывает элементы входного массива в обратном порядке. На вход функция получает указатель на первый элемент массива, а также его размерность. Задано вещественный массив размерности 3n, который делится на три подмассива. Используя функцию, для каждого из подмассивов, преобразовать входной массив Реалізувати функцію, що переписує елементи вхідного масиву у... http://www.cyberforum.ru/cpp-beginners/thread381517.html
C++ Длина отрезка по координатам вершин
разработать функцию f(x1,y1,x2,y2),каторая вычесляет длину отрезка по координатам вершин (x1,y1) и (x2,y2), и функцию t(a,b,c),которая проверяет, существует ли треугольник с длинами сторон a,b,c/С помощью данных функйий проверитьБможно ли построить треугольник по трем заданным точкам на плоскости.
C++ нужно вывести самое длинное слово и его порядковый номер в исходной строке.
Здраствуйте,мне нужно вывести самое длинное слово и его порядковый номер в исходной строке.Спасибо
C++ Двумерные массивы. Процедуры и функции http://www.cyberforum.ru/cpp-beginners/thread381506.html
нужер зделать программку, помогите если сможете: В матрице А (n х n) определите количество строк, элементы ко- торой образуют арифметическую прогрессию. Используйте подпро- грамму проверки строки.
C++ Как подсчитать вероятность появления каждого символа в тексте. Как подсчитать вероятность появления каждого символа в тексте. Например дана предложение: The method was attributed to Fano, who later published it as a technical report. Как найти вероятность? Каждого слово отдельно или все предложение вместе? И вообще как она считается по определлной формуле или как? подробнее

Показать сообщение отдельно
lizard
 Аватар для lizard
0 / 0 / 0
Регистрация: 20.09.2011
Сообщений: 14
10.11.2011, 23:16     Парсер лога с использованием boost::regex
Всем привет.

Есть задача пропарсить лог антивирусника с ипользованием boot:: regex, и выдать формат Filename - Diagnosis. Лог не очень удобен, так как записывает все в несколько строк.
Алгоритм: программа находит имя просканированного файла и проверяет будет ли дальше сообщение о вирусах.

Выражения составил, логика работает правильно, но программа выдав ответ по первому файлу закрывается.

Подскажите что неправильно с while`ами?

текст лога:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Avira / Windows Version 1.9.150.0
Copyright (c) 2010 by Avira GmbH
All rights reserved.
 
engine set:         8.2.6.84
VDF Version:        7.11.16.66 
 
 
Scan start time: 09.11.2011 23:42:17
Command line: scancl.exe C:\tmp\ --log=C:\log\log 
 
configuration file: C:\avira\scancl.conf
C:\tmp\1.jpg
 Date: 02.11.2011 Time: 11:13:39  Size: 47999
 
C:\tmp\bdc.exe
 Date: 17.10.2011 Time: 21:06:17  Size: 137728
 
C:\tmp\client.exe
 Date: 19.10.2011 Time: 19:47:51  Size: 14336
 
C:\tmp\eicar.com.txt
 Date: 09.11.2011 Time: 23:41:06  Size: 68
 ALERT: [Eicar-Test-Signature] C:\tmp\eicar.com.txt <<< Contains signature of the Eicar-Test-Signature virus
C:\tmp\server.exe
 Date: 18.10.2011 Time: 19:33:52  Size: 14848
 
C:\tmp\settings.ini
 Date: 28.10.2011 Time: 13:04:02  Size: 8192
 
                                                                                
 
Statistics :                
    Directories............... : 1
    Files..................... : 6
        Infected.............. : 1
            Ignored........... : 1
        Warnings.............. : 0
        Suspicious............ : 0
    Infections................ : 1
    Time...................... : 00:00:01
код программы:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
#include <iostream>
#include <string> 
#include <boost/regex.hpp>
#include <fstream>
 
using namespace std;
const int BUFSIZE = 10000;
int main()
{
 
char buf[BUFSIZE];
std::string name, iname, diagnosis;   
 
static const boost::regex infected("(ALERT:.*?.C:.tmp.*?)+(([a-zA-Z0-9]+\\.)+[a-zA-Z]{2,4})+(.<<<.+[a-zA-Z_])");
static const boost::regex healthy("(^C:.tmp.*?)+(([a-zA-Z0-9]+\\.)+[a-zA-Z]{2,4})");
 
ifstream in;
in.open("C:\\log\\avira_log.txt");
 
 
while (!in.eof()) 
{
in.getline(buf, BUFSIZE-1);
std::string s = buf;
    boost::smatch m;
    
    if ( boost::regex_search( s, m, healthy ) ) {
        
                
   name.assign(m[2]);
   cout << "Name: "<< name <<"  diagnosis:";
    
   
   // infected files
  
   while (!in.eof()) 
{
in.getline(buf, BUFSIZE-1);
std::string c = buf;
    
 
    if ( boost::regex_search( c, m, infected ) ) {
        
   iname.assign(m[2]);
   diagnosis.assign(m[4]);
 
   if ( name == iname)
   cout <<  diagnosis << endl;
   else
       cout << "OK"<< endl;
    } 
 }
}
}
 
system("pause");
 
}


Ошибка элементарная где-то, но я не заметил(

Буду благодарен помощи (:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 19:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru