Russian Qt Forum

Программирование => С/C++ => Тема начата: Alex_cs_gsp от Сентябрь 24, 2010, 07:14



Название: Определения размера файла средствами С++
Отправлено: 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);
}



Название: Re: Определения размера файла средствами С++
Отправлено: lit-uriy от Сентябрь 24, 2010, 07:18
а что такое std::ios::pos_type ?


Название: Re: Определения размера файла средствами С++
Отправлено: Alex_cs_gsp от Сентябрь 24, 2010, 07:36
Вроде как тип возвращаемого значения тэлж().


Название: Re: Определения размера файла средствами С++
Отправлено: Anchorite от Сентябрь 24, 2010, 08:06
Логично, что длина  получается 2 :)

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

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

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

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

В общем - учим матчасть :)


Название: Re: Определения размера файла средствами С++
Отправлено: Alex_cs_gsp от Сентябрь 24, 2010, 08:10
Спасибо. Не обратил внимание. Просто никогда не было необходимости юзать данные методы, вот и подзабыл. Кстати, никто не знает функции для получения статуса файла в черновике нового стандарта есть?


Название: Re: Определения размера файла средствами С++
Отправлено: Alex Custov от Сентябрь 25, 2010, 03:47
а зачем именно так?


Название: Re: Определения размера файла средствами С++
Отправлено: zenden от Сентябрь 25, 2010, 13:44
Посоветуйте кроссплатформенный способ узнать размер файла, при этом обязательно нужна поддержка юникодных имен (utf-16 или утф-8)


Название: Re: Определения размера файла средствами С++
Отправлено: Пантер от Сентябрь 25, 2010, 13:46
Заюзать буст или Кьют.


Название: Re: Определения размера файла средствами С++
Отправлено: Alex Custov от Сентябрь 26, 2010, 18:01
см. QFileInfo


Название: Re: Определения размера файла средствами С++
Отправлено: crackedmind от Сентябрь 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

разница только в имени функции и структуры.


Название: Re: Определения размера файла средствами С++
Отправлено: Alex_cs_gsp от Сентябрь 27, 2010, 18:35
Так если вопрос стоит "utf-16 или утф-8", а не "utf-16 и утф-8", то забить на утф-8 и определять способом, которым я выше воспользовался. А вообще какое отношение имеет размер файла к кодировке его имени???