LINUX.ORG.RU

Как прочитать определенную строку из файла? Qt

 ,


0

1

Доброго времени суток. Проблема такая, надо мне прочитать 3 строку из файла. Как я это делаю:

    QFile bookMarks_file("Bookmark.bm");
    if(bookMarks_file.open(QFile::ReadOnly)){
        QString str = bookMarks_file.readAll();
        QString str1 = str.at(3);
        bookMarks_file.close();
    }
Все компилируется без проблем но до ходит прочтения вылетает ошибка:

Приложение остановлено, так как оно получило сигнал от операционной системы.

Сигнал: SIGABRT Назначение: Aborted

Что делать? Подскажите новичку.


Ну а кто будет проверять, что readAll() у тебя там считало? К тому же, оно возвращает QByteArray, а не QString. И пусть второе можно получить из первого, так делать не нужно, ибо если файл будет очень большим, тебе никакой памяти не хватит. Вместо этого тебе надо всего лишь в цикле дёргать QTextStream::readLine(), пока не дойдёшь до нужной тебе строки, хоть третьей, хоть тысячной.

QFile file("filename");
if (file.open(QIODevice::ReadOnly))
  {
	const size_t linenum = 3;

	QTextStream s(&file);
	QString line;

	for (size_t i = 0; i < linenum; i++)
		line = s.readLine();

	...
	file.close();
  }
XMs ★★★★★
()
Последнее исправление: XMs (всего исправлений: 5)
Ответ на: комментарий от XMs

Так лучше:

QFile file("filename");
QString line;
if (file.open(QIODevice::ReadOnly | QIODevice::Text))
  {
	const size_t linenum = 3;

        for (size_t i = 0; i < linenum - 1; i++)
            file.readLine();
	QByteArray rawline = file.readLine();
	file.close();
        line = QString::fromUtf8(rawline); // или, например, fromAscii, смотря какие условия
  }
annulen ★★★★★
()
Последнее исправление: annulen (всего исправлений: 1)
Ответ на: комментарий от annulen

Все теперь ошибки нету. Всем спасибо за помощь.

Egor12
() автор топика
Ответ на: комментарий от annulen

Да, действительно. Заодно так исчез QTextStream

XMs ★★★★★
()
7 мая 2019 г.
Ответ на: комментарий от annulen

вывод по нажатию кнопки

Здравствуйте, не подскажете, есть файл test.txt c вопрос- варианты ответа. Как по нажатию кнопки в qt creator выводить 5 записей (например в label и radioButton) и так до конца фала?. не могу понять :(.

dimik77
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.