2011-03-26 199 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)) { 
    // ... 
}