2013-05-07 145 views
0

我有一個「.dat」文件,其中包含「1」和「-1」作爲垂直表示中的序列(即:每個元素都在一條線)。Qt:C++:如何讀取「.dat」文件

我試圖讀取文件如下:

char buf[30]; 
QFile sequence("Sequences.dat"); 
sequence.open(QFile::ReadOnly); 
for(int sym=0; sym<29; sym++){ 
    char c = symbols[sym] = sequence.readLine(buf,sizeof(buf)); 
    symbols[sym] = c; 
} 
sequence.close(); 

然而,結果卻沒有像我的順序如下所示:

enter image description here

幹了什麼我做錯了什麼?

+0

發表摘要來自Sequences.dat – 2013-05-07 17:04:27

+0

@StefanoSanfilippo:SEQLEN是30,我從它減去1變成29.所以,總共我會有30次迭代,從0到29. – 2013-05-07 17:05:09

+0

@StefanoSanfilippo:無法理解你的評論 – 2013-05-07 17:06:41

回答

2

檢查readLine API文檔:返回值是讀取的字節數,而行被讀入buf數組中,每次迭代都會覆蓋該數組。請注意,檢查數組的第一個符號是'\0'(空字符串),可能是因爲文件的最後一行是空的。

+0

不,請檢查我的問題更新 – 2013-05-07 17:08:42

+0

不根據[Qt文檔](http://qt-project.org/doc/qt-4.8/qiodevice.html#readLine) – 2013-05-07 17:08:49

+0

「終止'\ 0'字節是總是附加到數據「,這是發生了什麼。您的緩衝區存儲最後一次嘗試從文件讀取的結果。當序列到達它的eof時,它不會讀取任何內容並將\ 0附加到它。既然你總是閱讀buf,你的循環會不斷覆蓋以前閱讀的內容。 – 2013-05-07 19:37:25