Russian Qt Forum

Qt => Вопросы новичков => Тема начата: ixtorio от Апрель 19, 2011, 21:15



Название: строки
Отправлено: ixtorio от Апрель 19, 2011, 21:15
допустим уменя есть файл со строками,как мне выдрать каждую строку включая последнюю и первую,
обычными регулярками последнюю не выдерешь или я ошибаюсь,помогите пожалуйсто , мне нужно в точности
выдрать все строки ,но построчно а не по символьно


Название: Re: строки
Отправлено: madRoger от Апрель 19, 2011, 21:39
QIODevice::readLine


Название: Re: строки
Отправлено: ixtorio от Апрель 19, 2011, 21:41
а как мне знать сколько строк в файле?


Название: Re: строки
Отправлено: madRoger от Апрель 19, 2011, 21:46
QFile::atEnd(). Читать строки, пока этот метод не вернет true.


Название: Re: строки
Отправлено: ixtorio от Апрель 19, 2011, 21:51
спасибо


Название: Re: строки
Отправлено: ixtorio от Апрель 19, 2011, 22:08
и всётаки как узнать количество строк в файле?


Название: Re: строки
Отправлено: SeverusSnape от Апрель 19, 2011, 22:27
посчитать их


Название: Re: строки
Отправлено: remiznik от Апрель 20, 2011, 09:46
Код:
   QFile file(nameFile);
    if( file.exists() ){
      if( !file.open(QIODevice::ReadOnly ) ){
        qDebug()<<" Erorr : can not open file for reading  .";
      }

      int n=0;
      while( !file.readLine().isEmpty() ){
        n++;
      }
    }
я делал так . n это количество строк.


Название: Re: строки
Отправлено: alexman от Апрель 20, 2011, 09:51
Код:
   QFile file(nameFile);
    if( file.exists() ){
      if( !file.open(QIODevice::ReadOnly ) ){
        qDebug()<<" Erorr : can not open file for reading  .";
      }

      int n=0;
      while( !file.readLine().isEmpty() ){
        n++;
      }
    }
я делал так . n это количество строк.
Так это неправильно! Так посчитаете только до первой пустой строки!


Название: Re: строки
Отправлено: remiznik от Апрель 20, 2011, 09:54
Это я не учёл. Уменя простонет пустых строк.


Название: Re: строки
Отправлено: Пантер от Апрель 20, 2011, 10:00
isEmpty() проверять совсем не нужно. Т.е. пока file.readLine() возвращает true, увеличиваем счетчик.


Название: Re: строки
Отправлено: ixtorio от Апрель 20, 2011, 12:28
а что делать если файл очень большой?скажем на обработку 5 мегабайт уменя ушло около 10 секунд,а что если он будет гиг?


Название: Re: строки
Отправлено: Пантер от Апрель 20, 2011, 12:37
А чего ты хотел? :)


Название: Re: строки
Отправлено: alexman от Апрель 20, 2011, 13:19
а что делать если файл очень большой?скажем на обработку 5 мегабайт уменя ушло около 10 секунд,а что если он будет гиг?
Чтение с диска затратная операция.