读取文本文件到QStringList

时间:2011-02-23 12:33:07

标签: qt file

我有一个文本文件。我需要将它读取到QStringList。没有行分隔符。我的意思是文本文件中的每一行都在一个新行中。那么无论如何我能做到这一点吗?

5 个答案:

答案 0 :(得分:16)

我假设每行应该是列表中的单独字符串。在一个循环中使用QTextStream::readLine(),并在每个步骤中将返回的值附加到QStringList。像这样:

QStringList stringList;
QFile textFile;
//... (open the file for reading, etc.)
QTextStream textStream(&textFile);
while (true)
{
    QString line = textStream.readLine();
    if (line.isNull())
        break;
    else
        stringList.append(line);
}

答案 1 :(得分:4)

    QFile TextFile;
    //Open file for reading
    QStringList SL;

    while(!TextFile.atEnd())
    SL.append(TextFile.readLine());

答案 2 :(得分:3)

如果文件不是太大,请将整个内容读入QString,然后split()将其读入QStringList

我喜欢使用QRegExp版本来处理来自不同平台的换行:

QStringList sList = s.split(QRegExp("(\\r\\n)|(\\n\\r)|\\r|\\n"), QString::SkipEmptyParts);

答案 3 :(得分:1)

我喜欢我的代码完全缩进/ paranthesized与明显的变量名称(他们可能需要更长的时间来键入,但更容易调试)所以将执行以下操作(但更改" myTextFile"和&# 34; myStringList"更合理的名称,例如" employeeListTextFile")

QFile myTextFile;
QStringList myStringList;

if (!myTextFile.open(QIODevice::ReadOnly))
{
    QMessageBox::information(0, "Error opening file", myTextFile.errorString());
}
else
{  
    while(!myTextFile.atEnd())
    {
        myStringList.append(myTextFile.readLine());
    }

    myTextFile.close();
}

答案 4 :(得分:0)

以下代码读取文件

         QFile File("/file_path");
        if(!File.open(QIODevice::ReadOnly));
          {
              qDebug("Error");
         } 
        QTextStream in(&File);

    while(!in.atEnd())
    {
        qDebug()<<ReadAll;
        ReadAll=in.readAll();

    }
    File.close();

现在该文件已关闭,现在拆分新行,即\ n此处\ r \ n是回车

    List= ReadAll.split(QRegExp("[\r\n]"),QString::SkipEmptyParts);