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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Определения размера файла средствами С++  (Прочитано 6624 раз)
Alex_cs_gsp
Гость
« : Сентябрь 24, 2010, 07:14 »

Пытаюсь определить размер файла следующим образом, но почему-то для всех файлов размер получается равный 2 Непонимающий
Код:
inline unsigned long CMMMFile::_getFileSize()
{
m_file.seekg(std::ios::beg);
std::ios::pos_type pos_begin = m_file.tellg();

m_file.seekg(std::ios::end);
std::ios::pos_type pos_end = m_file.tellg();


return static_cast<unsigned long>(pos_end - pos_begin);
}

Записан
lit-uriy
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3880


Просмотр профиля WWW
« Ответ #1 : Сентябрь 24, 2010, 07:18 »

а что такое std::ios::pos_type ?
Записан

Юра.
Alex_cs_gsp
Гость
« Ответ #2 : Сентябрь 24, 2010, 07:36 »

Вроде как тип возвращаемого значения тэлж().
Записан
Anchorite
Гость
« Ответ #3 : Сентябрь 24, 2010, 08:06 »

Логично, что длина  получается 2 Улыбающийся

Код:
m_file.seekg(std::ios::end);

переводит указатель чтения в ПОЗИЦИЮ равную std::ios::end, которая в свою очередь равна 2.

Чтобы перейти в конец файла тебе нужно сделавть так

Код:
m_file.seekg(0, std::ios::end);

В общем - учим матчасть Улыбающийся
Записан
Alex_cs_gsp
Гость
« Ответ #4 : Сентябрь 24, 2010, 08:10 »

Спасибо. Не обратил внимание. Просто никогда не было необходимости юзать данные методы, вот и подзабыл. Кстати, никто не знает функции для получения статуса файла в черновике нового стандарта есть?
« Последнее редактирование: Сентябрь 24, 2010, 08:11 от Alex_cs_gsp » Записан
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #5 : Сентябрь 25, 2010, 03:47 »

а зачем именно так?
Записан
zenden
Гость
« Ответ #6 : Сентябрь 25, 2010, 13:44 »

Посоветуйте кроссплатформенный способ узнать размер файла, при этом обязательно нужна поддержка юникодных имен (utf-16 или утф-8)
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #7 : Сентябрь 25, 2010, 13:46 »

Заюзать буст или Кьют.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Alex Custov
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2063


Просмотр профиля
« Ответ #8 : Сентябрь 26, 2010, 18:01 »

см. QFileInfo
Записан
crackedmind
Гость
« Ответ #9 : Сентябрь 27, 2010, 09:27 »

Под виндой:
http://msdn.microsoft.com/en-us/library/14h5k7ff(v=vs.71).aspx

Posix:
http://www.opengroup.org/onlinepubs/000095399/functions/stat.html

разница только в имени функции и структуры.
Записан
Alex_cs_gsp
Гость
« Ответ #10 : Сентябрь 27, 2010, 18:35 »

Так если вопрос стоит "utf-16 или утф-8", а не "utf-16 и утф-8", то забить на утф-8 и определять способом, которым я выше воспользовался. А вообще какое отношение имеет размер файла к кодировке его имени???
« Последнее редактирование: Сентябрь 27, 2010, 18:37 от Alex_cs_gsp » Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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