如何在Qt中逐行讀取文本文件?在Qt中逐行讀取文本文件
我找了Qt相當於:
std::ifstream infile;
std::string line;
while (std::getline(infile, line))
{
...
}
如何在Qt中逐行讀取文本文件?在Qt中逐行讀取文本文件
我找了Qt相當於:
std::ifstream infile;
std::string line;
while (std::getline(infile, line))
{
...
}
使用此代碼:
QFile inputFile(fileName);
if (inputFile.open(QIODevice::ReadOnly))
{
QTextStream in(&inputFile);
while (!in.atEnd())
{
QString line = in.readLine();
...
}
inputFile.close();
}
你可以使用一個QFile :: readAll(),見http://doc.qt.io/qt-5/qiodevice.html#readAll
然後使用QString的構造函數,一個QByteArray中,看到http://doc.qt.io/qt-5/qstring.html#QString-9
我已經使用與ReadAll的QTextStream,但它不工作。 – 2011-03-26 20:30:26
如果文件很大,該怎麼辦? – Benp44 2018-02-08 15:29:32
她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]);
}
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();
};
只是代碼片段的答案不是很有幫助。 – Plog 2017-08-04 12:09:20
由於Qt的5.5,你可以使用QTextStream::readLineInto
。它的行爲類似於std::getline
,並可能更快QTextStream::readLine
,因爲它會重用字符串:
QIODevice* device;
QTextStream in(&device);
QString line;
while (in.readLineInto(&line)) {
// ...
}
不應該是'(QIODevice :: ReadOnly | QIODevice :: Text)'? – 2013-08-17 23:03:18
@AlexanderMalakhov QIODevice :: Text是默認值。 – sashoalm 2015-02-25 15:28:38
@Sergio:只是爲了好奇,如果輸入文件包含逗號分隔的字符串,那麼如何解析 – Chinmoy 2015-04-04 19:57:19