Как использовать функцию 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;
}