2013-05-08 79 views
0

我有一個「sequence.dat」文件,其中包含垂直表示中的「1」和「-1」(即:每個元素都在單行)..我試圖讀取文件如下:如何在使用QFile :: readAll函數時避免讀取「 n」

QFile sequence("Sequences.dat"); 
sequence.open(QIODevice::ReadOnly); 
QByteArray data = sequence.readAll(); 
for(int i=0; i<29; i++){   
    signedNo[i] = data[i]; // debugging breaking point 
} 
sequence.close(); 

然而,在調試的突破點,在QByteArray「數據」包括「1, - ,1,\ n」,而不是「 1,-1「...

是否有一次讀取整行,而不是每個字節單獨?和... 如果沒有,如何告訴「readAll」函數以避免「\ n」(它不是一個最佳解決方案,因爲我也想分別讀取「-1」而不是「 - 和1」 )

回答

3

QFile::readAll()返回一個字節數組,它包含文件的每個字節作爲一個單獨的元素。

對於您的用例,您需要逐行讀取文件。

QFile documentation顯示了一些方法是如何做到這一點,例如:

QVector<int> elements; 

QFile sequence("Sequences.dat"); 
if (!sequence.open(QIODevice::ReadOnly | QIODevice::Text)) 
    return; 

QTextStream in(&sequence); 
while (!in.atEnd()) { 
    QString line = in.readLine(); 
    elements.append(line.toInt()); 
} 

儘管這個樣本是從Qt文檔,我建議從in.readLine()它返回一個空檢查返回值QString當到達文件結束時,而不是使用atEnd()

+0

感謝它的工作.. – 2013-05-08 13:51:35

2

你可以逐行讀取,你可以處理它,你看行之後:

i = 0; 
while (!sequence.atEnd()) { 
    QByteArray line = sequence.readLine(); 
    signedNo[i] = line[i]; 
    i++; 
} 
相關問題