我試圖解析輸出的文本文件,如下面的示例所示,我的示例具有有限的條目,但是我的實際條目超過了15000行,所以我不能在單獨讀取這些:解析列到數組中,同時區分行中的內容
ID IC TIME
15:23:43.867 /g/mydata/dataoutputfile.txt標識符
0003 1233 ABCD
0043 eb54 ABF3
000F 0BB4 AC24
000A A325 ac75
0023 0043 ac91 15:23:44.000 /g/mydata/dataoutputfile.txt標識符
0003 1233 ABCD
0043 eb54 ABF3
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,每次通過循環。
爲了增加清晰度,我開始編輯將輸入文件放入代碼塊(我的首選項)或塊引用中,但是我意識到我可能正在查看一些自動換行的非常長的行。也許你應該自己編輯。 – dmckee