簡體   English   中英

在 Qt 中逐行讀取文本文件

[英]Read a text file line by line in 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 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)) {
  // ...
}

這是我的代碼中的示例。 所以我將使用 readLine() 從第一行到第三行讀取文本,然后存儲到數組變量並使用 for-loop 打印到文本字段:

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]);
    }

或類似的東西,用於從文件中讀取

包含的庫:

#include "QFile"
#include "QDir"

編碼:

QFile file;
file.setFileName("text.txt");
QDir::setCurrent("C:/Users/USER_NAME/Documents/QTCreatorWorkspace/untitled1");
QTextStream data(&file);

if(file.open(QIODevice::ReadOnly)){
    ui->plainTextEdit->insertPlainText(file.readAll());
    file.close();
}
else{
    //Error statement
}

對於寫入文件:代碼:

QFile file;
file.setFileName("text.txt");
QDir::setCurrent("C:/Users/USER_NAME/Documents/QTCreatorWorkspace/untitled1");
QTextStream data(&file);

if(file.open(QIODevice::ReadWrite)){
    data << ui->plainTextEdit->toPlainText();
    file.close();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM