我想使用c ++ fstream

时间:2018-09-09 01:27:27

标签: c++ parsing logging

我想制作简单的控制台程序。 该程序是死检查程序 有时,日志上的死亡点与实际发生的地方不同。 dlt文件的格式如下。 我想通过c ++解析以下二进制文件。 我尝试了多次读取二进制文件,但是失败了。 如果您可以上传一个简单的示例源,将不胜感激。\ 谢谢

#include <stdio.h>
#include <fstream>
#include <iterator>
#include <algorithm>
#include <io.h>
#include <vector>
#include <string>
#include <conio.h>
using namespace std;

struct dltLogFormat
{
char dltPattern[100];
unsigned int TimeStamp_sec;
int TimeStamp_mic;
char ECU_ID[4];
};

void main()
{
    FILE *fp;
vector<string> dltList;
char dltPattern[5] = "";
unsigned int TimeStamp_sec = 0;
int TimeStamp_mic = 0;
char ECU_ID_CHARACTER[5] = "";
char infoHeader;
unsigned short messageLength;
int ECU_ID = 0;
unsigned int sessionID = 0;
int extHeaderInfo = 0;
unsigned int numberOfArguments = 0;
unsigned int applicationID = 0;
unsigned int ContextID = 0;
char payload[17];

_finddata_t fd;
long handle;
int result = 1;
handle = _findfirst(".\\*.dlt", &fd);

if (handle == -1)
{
    printf("There were no dlt files.\n");
    return;
}

while (result != -1)
{
    dltLogFormat dltFormant;
    dltList.push_back(fd.name);
    printf("File: %s\n", fd.name);
    result = _findnext(handle, &fd);

    std::ifstream input(fd.name, std::ios::binary | std::ios::in);

    while (true)
    {
        input >> dltPattern;
        input.read((char*)&TimeStamp_sec, sizeof(unsigned int));
        input.read((char*)&TimeStamp_mic, sizeof(int));
        input >> ECU_ID_CHARACTER;
        input.read((char*)&infoHeader, sizeof(char));
        input.read((char*)&messageLength, sizeof(unsigned short));
        input.read((char*)&ECU_ID, sizeof(int));
        input.read((char*)&sessionID, sizeof(unsigned int));
        input.read((char*)&extHeaderInfo, sizeof(unsigned int));
        input.read((char*)&numberOfArguments, sizeof(unsigned int));
        input.read((char*)&applicationID, sizeof(unsigned int));
        input.read((char*)&ContextID, sizeof(unsigned int));
        input.read(payload, sizeof(char)*messageLength);
        //header

        //input

        //extend header


        //payload
        }
    }
}

0 个答案:

没有答案