Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/125.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在Qt中逐行读取文本文件_C++_Qt - Fatal编程技术网

C++ 在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())

如何在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();
}

下面是我代码中的示例。因此,我将使用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())
正是我所需要的。