Russian Qt Forum
Ноябрь 25, 2024, 21:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Как сразу уйти в конец файла в QTextStream?  (Прочитано 3781 раз)
fulkabaster
Гость
« : Май 24, 2009, 11:09 »

Собственно, нужно просто подсчитать, сколько символов в файле. Но так как файлы большие (до десятков миллионов символов), то простой цикл от начала до конца будет не очень хорошим решением. Можно было бы просто уйти в конец файла, и взять значение функции QTextStream->pos(), но вот как уйти в конец файла? С помощью seek(), задав заведомо большое значение? Но в описании функции ничего такого не нашел, так что даже если один раз и вернет конечное значение положения, для другого раза не гарантированно.
Записан
Rcus
Гость
« Ответ #1 : Май 24, 2009, 11:15 »

Цитировать
qint64 QTextStream::pos () const

Returns the device position corresponding to the current position of the stream, or -1 if an error occurs (e.g., if there is no device or string, or if there's a device error).

В случае однобайтной кодировки что мешает получить длину файла попроще? А в случае многобайтных кодировок без декодирования точно количество символов не узнать.
Записан
fulkabaster
Гость
« Ответ #2 : Июнь 01, 2009, 17:16 »

Ага, так и сделал. Определяю по размеру файла в байтах. При больших файлах дает ошибку в несколько байтов (пустой файл занимает в линуксе 2 байта - из-за имени файла?) - что для меня приемлемо.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.047 секунд. Запросов: 20.