Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Получение размера файла с помощью fstream. ОТВЕТ. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ LinkList запись\чтение\поиск используя бинарный файл dat http://www.cyberforum.ru/cpp-beginners/thread30408.html
Задача такая. Телефонный справочник Имя Фамилия Phone1 Phone2 Phone3 Mary Brown (012)111-1111 (012)111-2222 (013)111-2223 Вася Бонд (123)222-3333 -- -- A. Add a new phone number to the phone...
C++ Точки круга Помогите написать программу ---------------------------------------------------------------------------------------------- Сколько имеют общиг точек три круга, что заданно координатами своих... http://www.cyberforum.ru/cpp-beginners/thread30393.html
Перегрузка функции C++
Люди-программеры, помогите ,пожалуйста, с решением задачи:wall: Создайте функцию promt() для выдачи подсказки пользователю и ожидания ввода данного. Перегрузите функцию promt() так, чтобы она...
C++ Вызовы функций с помощью указателей
Составить программу которая использует вызовы функций с помощью указателей ------------------------ первая функция double (*func1) (float *, int) ------------------------...
C++ Написать программу, печатающую n-ую строку введённого текста http://www.cyberforum.ru/cpp-beginners/thread30356.html
Дан тескт.Написать программу,печатующую n-ую строку введённого текста, N задаётся при запуске программы.
C++ Сравнение подстрок Здравствуйте. Не пойму, что за ошибка у меня. Задана строка. Есть файл с длинной строкой. Мне нужно открыть файл и разделить находящуюся там строку на подстроки. А затем посимвольно сравнить... подробнее

Показать сообщение отдельно
CEBEP
106 / 106 / 9
Регистрация: 21.03.2010
Сообщений: 440
12.10.2011, 05:25
да блин! это не верный способ! Для некоторых файлов и старых стандартов это приведёт к ошибкам в ихмерениях размера файла. Nikolai M. Josuttis в своей книжке про стандартную библиотеку объясняет что такой вариант не годен так как, скажем, символ перехода на другую строку часто записывается в 2 байта. Я сегодня работаю с файлом в 98 тысяч строк, и такая ошибка ощутима. Именно из-за трудности написания универсального алгоритма получение размера таким образом не реализовано вовсе.
Функции tellg() и tellp() возвращают абсолютную позицию в виде значения типа pos_type. Это значение не является целым числом или индексом, задающим позицию символа, поскольку логическая позиция может отличатся от фактической. Например, в текстовых файлах MS-DOS символы новой строки хранятся в файлах в виде двух символов, хотя логически они соответствуют только оному символу. Кроме того, ситуация дополнительно усложняется при многобайтовой кодировке символов.
Добавлено через 1 час 16 минут
вернее, это не размер строки в файле а размер самого файла. Если нужен размер строки нужно суметь открыть файл с параметром std::ios::binary. У меня, лично, не вышло. После пяти часов копания плюнул и написал через <cstdio>
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru