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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.82
KorPaEv
56 / 32 / 4
Регистрация: 08.07.2011
Сообщений: 208
#1

Размер и выделение памяти под открытие файла. - C++

09.09.2011, 10:36. Просмотров 1641. Ответов 16
Метки нет (Все метки)

Всем привет.
Уважаемые знатоки, вопрос в следующем)

Значит задача такая, есть некий файл бинарный.
Размер не известный (компилятору). Я его открываю, читаю все что там есть и вывожу на экран.
Подскажите как определить размер этого файла и запихать все что там есть в буфер, который как раз будет динамическим (расширяемым в зависимости от размера файла)?
Ну а затем вывести все это на экран.
Привожу свой код ниже (буфер определяю статическим). Мне это не нужно.
P.S. В перспективе данные файла будут подаваться в реалтайме, поэтому по этому вопросу буду рад выслушать на будущее советы.
Пишу на C++, работаю с потоками поэтому fopen, seeks и т.д мне тоже не нужно.

Код.

Код
#include <fstream>
#include <iostream>

using namespace std;

const unsigned int buf_size = 0x4000; //вот тут задаю сам буфер

int main()
    {
		char *buffer;

        ifstream f_op("text", ios::binary);
        if (!f_op)
            cerr<<"Error file open";
        else
            cout<<"File open!!! Text this file:\n";

		buffer=new char(buf_size);

        while (!f_op.eof())
            {
            f_op.read((char *)buffer, 1); //читаю по одному байту, тоже плохо какие идеи? В идеале мне читать надо блочно по 4 байта например, для скорости обработки текста.
            cout<<*buffer;
            }
        f_op.close();

		delete buffer;
    }
Добавлено через 3 часа 22 минуты
Неужели нет никаких идей ни у кого?((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.09.2011, 10:36
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Размер и выделение памяти под открытие файла. (C++):

Выделение памяти под масссив - C++
Как занести данные в двумерный массив с клавиатуры? пользователь должен сам ввести размерность

Выделение памяти под указатель - C++
Здравствуйте форумчане,у меня возник маленький вопрос:) Почему sizeof(char) дает результат в 1 байт, а sizeof(char*) ) дает 4 байта.Как...

Выделение памяти под массив - C++
Требуется выделить память под матрицу. Будет ли следующий код работать корректно? //глобальная область int x_size = 3; ...

Выделение памяти под массив - C++
в массиве данных хранять в последовательных ячейках памяти В программе, выделенна память под массив, для ввода данных пользователем. ...

Выделение памяти под матрицу - C++
Всем доброго времени суток! Есть такая проблема, у меня есть свой класс Cell. Мне нужно создать матрицу объектов этого типа и выделить под...

Выделение памяти под структуру - C++
enrollee *p=new enrollee; после работы delete p; выбивает ошибку. неправильно очищаю???

16
KorPaEv
56 / 32 / 4
Регистрация: 08.07.2011
Сообщений: 208
09.09.2011, 17:32  [ТС] #16
Спасибо еще раз всем за участие))) буду дерзать далее.
0
TheAthlete
153 / 153 / 13
Регистрация: 31.08.2010
Сообщений: 536
10.09.2011, 15:46 #17
На мой вгляд, Вам нужно посмотреть в сторону "Проецируемыемых в память файлов". Этот метод позволит не заморачиваться с выделением буферов, тем более, что система не даст выделить буфер размером 2 ГБ и более.

Более подробно можете почитать в книге "Джеффри Рихтер, Кристоф Назар - Windows via C/C++. Программирование на языке Visual C++" Глава 17. Проецируемые в память файлы
1
10.09.2011, 15:46
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.09.2011, 15:46
Привет! Вот еще темы с ответами:

Выделение памяти под переменную - C++
Драсте, уважаемые. Мне надо выделить переменную на 25мег, чтоб в ней хранить все просчёты выполненые программой. (Пробовал в BCB6 и в BCW...

Выделение памяти под указатель - C++
Доброго времени суток. Возник такой вопрос: для любой программы, насколько мне известно, выделяется свой кусочек оперативной памяти. Когда...

Выделение памяти под структуру - C++
Доброго дня, товарисчи. В общем, возникла проблема при выделении памяти для структуры. Подскажите, пожалуйста, в чем ошибка. Собсна сам...

Выделение памяти под строку - C++
Никак не могу понять, в чем проблема, подскажите пожалуйста. Предположим, инициализирую переменную, ожидая получить строку из 10...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru