Как использовать функцию QTextStream::readLine?

Я пытаюсь прочитать значения из текстового файла, используя приведенный ниже код Qt.

int ReadFromFile(QString fileName)
{
   QFile file(fileName);
   if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
      return 1;

   QTextStream in(&file);
   while (!in.atEnd())
   {
      QString line = in.readLine(1); //read one line at a time
      QStringList lstLine = line.split(",");
   }
   file.close();
   return 0;
}

Содержимое текстового файла выглядит следующим образом:

1,0.173648178  
2,0.342020143  
3,0.5  
4,0.64278761  
5,0.766044443  
6,0.866025404  

Однако readLine всегда возвращает по одному символу за раз, но я собираюсь читать по одной строке за раз и разбивать каждую строку, чтобы получить отдельные значения, разделенные запятыми.

Я что-то упустил здесь?

3 ответа

Решение

Да. Вы проходите 1 для maxlen параметр, который означает ограничение длины строки до 1 символа. Попробуйте, не предоставляя ничего для maxlen,

Удалите ноль из вашего кода и попробуйте..

   QTextStream in(&file);
   while (!in.atEnd())
   {
      QString line = in.readLine(); //read one line at a time
      QStringList lstLine = line.split(",");
   }

Я знаю, что это может быть старый пост, но похоже, что вы перезаписываете свою переменную lstLine во время каждой итерации.

Вот этот:

QStringList lstLine = line.split(",");

Изменить на

int ReadFromFile(QString fileName)
{
   QStringList lstLine;
   QFile file(fileName);
   if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
      return 1;
   QTextStream in(&file);
   while (!in.atEnd())
   {
      QString line = in.readLine(); //specifying number = # of characters
      lstLine.append( line.split(",") );
   }
   file.close();
   return 0;
}
Другие вопросы по тегам