2012-03-30 124 views
2

我想使用下面給出的Qt代碼從文本文件中讀取值。如何使用QTextStream :: readLine函數?

int ReadFromFile(QString fileName) 
{ 
    QFile file(fileName); 
    if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) 
     return 1; 

    QTextStream in(&file); 
    while (!in.atEnd()) 
    { 
     QString line = in.readLine(1); //read one line at a time 
     QStringList lstLine = line.split(","); 
    } 
    file.close(); 
    return 0; 
} 

文本文件的內容如下:

1,0.173648178 
2,0.342020143 
3,0.5 
4,0.64278761 
5,0.766044443 
6,0.866025404 

不過的readLine總是返回一個字符的時間,但我的本意是在一次讀取一行,並在每行拆分獲得單獨的逗號分隔值。

我在這裏錯過了一些基本的東西嗎?

回答

5

是的。您爲maxlen參數傳遞1,這意味着將行長限制爲僅1個字符。嘗試它不需要提供任何東西maxlen

+0

當我嘗試這種方式,返回的readLine多行的內容! – Martin 2012-03-30 12:25:08

+0

嗯,我不能重複。使用你提供的數據,readLine()適合我。 – kenrogers 2012-03-30 13:16:10

+2

問題是行被不正確地以「\ r」終止,行沒有正確的尾行字符「\ r \ n」 – Martin 2012-04-02 04:48:10

1

移除代碼零,並嘗試..

QTextStream in(&file); 
    while (!in.atEnd()) 
    { 
     QString line = in.readLine(); //read one line at a time 
     QStringList lstLine = line.split(","); 
    }