C++ 在Qt中逐行读取文本文件
如何在Qt中逐行读取文本文件 我正在寻找的Qt等效于:C++ 在Qt中逐行读取文本文件,c++,qt,C++,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())
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();
}
下面是我代码中的示例。因此,我将使用readLine()从第1行到第3行读取文本,然后存储到数组变量并使用for循环打印到textfield:
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文件(“file.txt”);
如果(!file.open(QIODevice::ReadOnly | QIODevice::Text))
返回;
文件中的QTextStream(&F);
QString行[3]=in.readLine();
对于(inti=0;itextEdit->append(第[i]行));
}
此代码可能更简单一些:
QFile inputFile(QString("/path/to/file"));
inputFile.open(QIODevice::ReadOnly);
if (!inputFile.isOpen())
return;
QTextStream stream(&inputFile);
for (QString line = stream.readLine();
!line.isNull();
line = stream.readLine()) {
/* process information */
};
由于Qt 5.5,您可以使用
QTextStream::readLineInto
。它的行为类似于std::getline
,可能比QTextStream::readLine
更快,因为它重用了字符串:
QIODevice* device;
QTextStream in(&device);
QString line;
while (in.readLineInto(&line)) {
// ...
}
模式不应该是
(QIODevice::ReadOnly | QIODevice::Text)
?@AlexanderMalakhov QIODevice::Text是默认模式。@塞吉奥:出于好奇,如果输入文件包含逗号分隔的字符串,那么如何parse@Chinmoy使用QString split()方法。仅使用代码片段的答案没有多大帮助。您的代码片段很有帮助。(!line.isNull())
正是我所需要的。