crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> как считывать из текстового файла нужную строку
eldar85
  опции профиля:
сообщение 9.4.2010, 12:34
Сообщение #1


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


нужно написать такую функцию, чтобы она считывала из текстового файла например 5 строку

вот нашел в асистенте такое
QFile file("1234.txt");
     if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
         return;

     QTextStream in(&file);
     while (!in.atEnd()) {
         QString line = in.readLine();
         process_line(line);
     }

опять же тут не пойму что значит строка "process_line(line); ", к чему она вообще относиться)) в смысле что это вообще???
да и в итоге это выдаст мне весь текст в строку, а мне нужно только определенную строчьку.

попробывал вот так
 QFile file("c:/1234.txt");
     if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
         return;
QString line1;
     QTextStream in(&file);
     while (!in.atEnd()) {
         line1 = in.readLine();
        
     }
qDebug() << line1;

но он выводит только последнюю строку в текстовом файле.
значит вот эта строка process_line(line); все же делает так чтобы выводились все строки, но пока не найду что она означает и как ее инициализировать, компилятор ругается на нее...

Сообщение отредактировал eldar85 - 9.4.2010, 12:37
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 9.4.2010, 15:17
Сообщение #2


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


ну все разобрался - вот рабочая версия)))
 QFile file("c:/1234.txt");
     if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
         return;

int f=0;
char mass[10][100];

     QTextStream in(&file);
     while (!in.atEnd()) {
        QString line = in.readLine();

         QByteArray ar = line.toAscii();
         char* sometext=ar.data();
strcpy(mass[f],sometext);
f++;
     }
qDebug() << mass[1];
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 9.4.2010, 15:31
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(eldar85 @ 9.4.2010, 16:34) *
значит вот эта строка process_line(line); все же делает так чтобы выводились все строки
это вымышленная функция, приведённая для примера. В которой обрабатывается считанная строка.

Чтобы считать 5-ю строку, нужно в вести счётчик и в цикле его инкрементировать и проверять, когда равен пяти, цикл прервать
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
eldar85
  опции профиля:
сообщение 9.4.2010, 20:15
Сообщение #4


программист
***

Группа: Участник
Сообщений: 283
Регистрация: 2.1.2010
Из: Москва
Пользователь №: 1348

Спасибо сказали: 0 раз(а)




Репутация:   0  


спасибо, я понял уже)) думал может какая то функция стандартная которую я нез нлал, но так как нигде не нашел ее понятно что просто пример))
тот вариант который я последний написал как раз и выдаст любую строку которую укажешь в
qDebug() << mass[5];
если 5я строка нужна))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 9.4.2010, 20:36
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Для чего использовать массив символов?
char mass[10][100];

А если не известно заранее максимальное количество строк в документе?
А если длина строки будет больше 100?

К тому же у Qt есть все необходимое, что бы упростить этот процесс:
    QFile file("c:/1234.txt");
     if (!file.open(QIODevice::ReadOnly | QIODevice::Text))
         return;

    QStringList mass;

     QTextStream in(&file);
     while (!in.atEnd())
    {
        QString line = in.readLine();
        mass.append( line );

     }
    qDebug() << mass[ 5 ];

Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 1:26