0

我正在尝试解析像下面的示例一样输出的文本文件,我的示例条目有限,但我的实际条目超过 15000 行,因此我无法单独阅读这些文件:

身份证IC时间

15:23:43.867 /g/mydata/dataoutputfile.txt 标识符

0003 1233 abcd

第0043章

000f 0bb4 ac24

000a a325 ac75

0023 0043 ac91 15:23:44.000 /g/mydata/dataoutputfile.txt 标识符

0003 1233 abcd

第0043章

000f 0bb4 ac24

000a a325 ac75

0023 0043 ac91

是我的输出。时间栏经常重置。

除了我在示例中的 3 列之外,我现在正在做的是另外制作 2 列。第一列是 ID 列的转换,转换为可理解的消息。第二个附加列将计算每个时间码之间的差异,时间码重置时除外。

我的逻辑是,将每一列读入一个数组,这样我就可以执行必要的翻译和操作。

我专注于首先获取时间码差异,因为我认为获取翻译会更简单一些。

我遇到的问题是将条目读入他们的矩阵:

我的代码看起来有点像这样:

while(readOK && getline(myfile,line))
{
stringstream ss(line);
string ident,IC,timehex,time,filelocation;
string junk1,junk2;
int ID[count];
int timecode[count2];
int idx=0;

if(line.find("ID") !=string::npos)
{
     readOK=ss>>ident>>IC>>timehex;
     myfile2<<ident<<"\t\t"<<IC<<"\t\t"<<timehex<<"\t\t"<<"ID Decoded"<<"\t\t"<<"DT"<<endl;
     myfile3<<"headers read"<<endl
}

else if(line.find("identifier") != string::npos)
{
     readOK=ss>>time>>filelocation;
     myfile3<<"time and location read";
     myfile2<<time<<"\t\t"<<filelocation<<endl;
}

else //this is for the hex code lines
{
     readOK=ss>>hex>>ID[idx]>>IC>>timecode[idx];

     if (readOK)
     {
          myfile2<<setw(4)<<setfill('0')<<hex<<ID[1000]<<"\t\t"<<IC<<"\t\t"<<timecode[1000]<<endl;
          myfile3<<"success reading info into arrays"<<endl;
     }

     else
     myfile3<<"error reading hex codes"<<endl;
}
idx++;
}

尽管此代码无法正常工作。因为插入的时间和文件位置条目有助于跟踪我在代码中查看的时间,所以我不能只在每一行中读取完全相同的内容。

我的直觉告诉我,我太早地调用矩阵条目并且它们还没有被填充,因为如果我计算数字 1000,我得到一个 0(我的输入文件中有超过 15000 行并且我有我的数组的边界在我程序的另一部分动态设置)。

我似乎无法弄清楚如何正确分配条目,因为我遇到了一些继承问题,每次通过循环时计数变量都重置为 0。

4

1 回答 1

0

int idx在 while 循环范围之外定义(在 while 之前)。就像现在一样,每次循环都会被重置。

于 2012-05-23T14:45:00.810 回答