Разбор сложного текстового файла с использованием C ++ - PullRequest
0 голосов
/ 11 января 2020

У меня есть задача синтаксического анализа этого текстового файла с использованием кода C ++. Мне нужно будет прочитать этот файл, найти ключевое слово «Сводка результатов» и собрать все содержимое после «Сводка результатов»: в одной переменной, названной строковыми данными; и записать содержимое данных в CSV-файл. Мне нужна помощь в переводе содержимого в переменные строковые данные ...

Мой текстовый файл выглядит следующим образом:

textfile.txt: Файл отчета: C: \ Program Files (x86) \ Enterprise \ Reports \ Export_20190617099828.txt

Time log:
---------------------------------------

Time:   9:03:49 AM
Export of archive Walton, Amelia was completed successfully.

End time:   9:03:49 AM


Results Summary:
---------------------------------------

Juma, Jmelia : Processed
Storage server: SRE!
Export = 12; Failed = 0; Remaining = 0 (0%)


Number archives processed:      1
Number archives being processed:    0
Number archives part processed:     0
Number archives not processed:      0
Number archives failed:         0

---------------------------------------------------------------

Я хочу проанализировать этот текстовый файл и записать данные, проанализированные в CSV-файл.

Данные для анализа:

Results Summary:
---------------------------------------

Juma, Jmelia : Processed
Storage server: SRE!
Export = 12; Failed = 0; Remaining = 0 (0%)

Я пробовал разными способами, но у меня ничего не получается.

string search = "Results Summary:"
getline(inFile, line); // get line from file
pos = line.find(search); // search
if (pos == string::npos) // string::npos is returned if string is not found
{
    WriteLogFile("Found Results Summary:!\n");

    break;
} else {
    WriteLogFile("Not Found string searched for!\n");
}

// вывод:

ниже вывод должен быть записан в файл .csv с именем: test.csv

Juma, Jmelia 
Storage server: SRE!
Export = 12; 
Failed = 0;
Remaining = 0 (0%)

1 Ответ

0 голосов
/ 11 января 2020

Я бы сделал так:

#include <iostream>

using namespace std;

int main()
{
             ifstream input;
        size_t pos;
              string line;
        int found_string=0;
        input.open("t.txt");
        if(input.is_open())
        {
            while(getline(input,line))
            {
                pos = line.find("Results Summary:");
                if(pos!=string::npos) // string::npos is returned if string is not found
                {
                    found_string=1;
                    cout <<"Found!";
                }


                if(found_string==1)
                {
                    cout<<line<<endl;
                   //do whatever to save it in the csv
                }

            }
        }

}
...