читать текстовый файл в QStringList - PullRequest
5 голосов
/ 23 февраля 2011

У меня есть текстовый файл.Мне нужно прочитать его в QStringList.нет линейных разделителей.Я имею в виду, что каждая строка в текстовом файле находится в новой строке.Так есть ли вообще я могу это сделать?

Ответы [ 5 ]

17 голосов
/ 23 февраля 2011

Я предполагаю, что каждая строка должна быть отдельной строкой в ​​списке. Используйте 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);
}
4 голосов
/ 18 июня 2013
    QFile TextFile;
    //Open file for reading
    QStringList SL;

    while(!TextFile.atEnd())
    SL.append(TextFile.readLine());
3 голосов
/ 23 февраля 2011

Если файл не слишком большой, прочитайте все содержимое в QString, а затем split() в QStringList.

Мне нравится использовать версию QRegExp для обработки перевода строки с разных платформ:

QStringList sList = s.split(QRegExp("(\\r\\n)|(\\n\\r)|\\r|\\n"), QString::SkipEmptyParts);
1 голос
/ 20 января 2015

Мне нравится, чтобы мой код был полностью с отступом / парантеризован с очевидными именами переменных (они могут занимать больше времени для ввода, но их гораздо легче отлаживать), поэтому сделал бы следующее (но изменив "myTextFile" и "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();
}
0 голосов
/ 26 мая 2014

Код ниже читает файл

         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 - возврат каретки

    List= ReadAll.split(QRegExp("[\r\n]"),QString::SkipEmptyParts);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...