开发者

read a text file to QStringList

I have a text file. I need to read it to a QStrin开发者_如何学JAVAgList. there are no line seperators. I mean each line in the text file is in a new line. So is there anyway i can do this?


I assume that every line should be a separate string in the list. Use QTextStream::readLine() in a cycle and on each step append the returned value to the QStringList. Like this:

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


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

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


If the file isn't too big, read the whole content into a QString and then split() it into a QStringList.

I like using the QRegExp version to handle linefeed from different platforms:

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


I like my code to be fully indented/paranthesized with obvious variable names (they may take longer to type but are much easier to debug) so would do the following (but changing "myTextFile" and "myStringList" to more sensible names, such as "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();
}


The below code reads the file

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

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

    }
    File.close();

Now the file is closed, now split the new line i.e \n here \r is carriage return

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜