2011-03-26 47 views

回答

70

使用此代碼:

QFile inputFile(fileName); 
if (inputFile.open(QIODevice::ReadOnly)) 
{ 
    QTextStream in(&inputFile); 
    while (!in.atEnd()) 
    { 
     QString line = in.readLine(); 
     ... 
    } 
    inputFile.close(); 
} 
+1

不應該是'(QIODevice :: ReadOnly | QIODevice :: Text)'? – 2013-08-17 23:03:18

+2

@AlexanderMalakhov QIODevice :: Text是默認值。 – sashoalm 2015-02-25 15:28:38

+0

@Sergio:只是爲了好奇,如果輸入文件包含逗號分隔的字符串,那麼如何解析 – Chinmoy 2015-04-04 19:57:19

-2

她e是我的代碼中的例子。因此,我將使用的readLine()讀取第一行文本到第3行,然後存入數組變量,並使用循環打印成文本字段:

QFile file("file.txt"); 

    if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) 
     return; 

    QTextStream in(&file); 
    QString line[3] = in.readLine(); 
    for(int i=0; i<3; i++) 
    { 
     ui->textEdit->append(line[i]); 
    } 
0
QFile inputFile(QString("/path/to/file")); 
inputFile.open(QIODevice::ReadOnly); 
if (!inputFile.isOpen()) 
    return; 

QTextStream stream(&inputFile); 
QString line = stream.readLine(); 
while (!line.isNull()) { 
    /* process information */ 

    line = stream.readLine(); 
}; 
+0

只是代碼片段的答案不是很有幫助。 – Plog 2017-08-04 12:09:20

0

由於Qt的5.5,你可以使用QTextStream::readLineInto。它的行爲類似於std::getline,並可能更快QTextStream::readLine,因爲它會重用字符串:

QIODevice* device; 
QTextStream in(&device); 

QString line; 
while (in.readLineInto(&line)) { 
    // ... 
}