2013-05-07 93 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