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

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

Войти
Регистрация
Восстановить пароль
 
Pro_ha
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 32
#1

Работа с памятью как с файлом - C++

09.06.2013, 10:54. Просмотров 381. Ответов 5
Метки нет (Все метки)

Есть сторонний класс, который загружает и работает с файлом через std::ifstream. Выглядит так: Load(const char *Filename). Но у меня этот файл уже представлен в памяти. Есть указатель на эти данные, и известен размер. Как мне изменить функцию Load, чтоб работая с ifstream, она на самом деле работала с данными в памяти? Вобщем, поменять на Load(void *data, long int data_size). Не пойму, что нужно изменить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.06.2013, 10:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Работа с памятью как с файлом (C++):

Работа с памятью. (Незнаю как правильно назвать тему). - C++
Программа пример: #include <iostream> void main() { int a, b, c; std::cin >> a; std::cin >>...

Работа с текстовым файлом как с базой данных - C++
привет всем. возник вот такой вопрос: есть некая база данных в текстовичке. нужно что бы с помощью программы по части известного,...

Работа с текстовым файлом: как посчитать кол-во букв в слове? (посимвольная обработка) - C++
Работа с текстовым файлом: как посчитать кол-во букв в слове? (посимвольная обработка)

Работа с памятью - C++
Форумчане, доброго времени суток. Заранее извиняюсь за нубские вопросы, но должен разобраться в теме. Суть такова: написал class...

Работа с памятью - C++
Может кто хорошо понимает механизм выделения и освобождения памяти объяснить его, а то я в конец запутался с ним, вот помогал одному...

Работа с памятью в С++ - C++
Здравствуйте. Если я правильно понимаю, то при запуске программы, программе выделяется определенное кол-во памями, которое оно может...

5
Wolkodav
607 / 460 / 32
Регистрация: 18.09.2012
Сообщений: 1,686
09.06.2013, 11:23 #2
Ну вот передавайте в фунцкию указатель на начало. Вам известен размер? Если да, то пока не достигнут конец файла уваличивайте уазатель( просто ++). А что бы получить данный из "файла" надо произвести разыменование указателья.
0
Pro_ha
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 32
09.06.2013, 12:31  [ТС] #3
Не понял вас.
Вот есть готовая рабочая функция:
C++
1
2
3
4
bool Load(const char *Filename){
  std::ifstream file(Filename, std::ios::binary | std::ios::in);
  //...остальной код, использующий file.seekg, file.read
}
Я хочу ее переделать на:
C++
1
2
3
4
bool Load(void *data, long int data_size){
  //Что тут изменить, чтоб обьект file не загружал данные с файла, а брал их с *data.
  //...остальной код, использующий file.seekg, file.read
}
Я мог бы вобще не создавать обьект file, а работать сразу с void *data, но тогда придется в этой функции переписывать много мест, где встречается file.seekg, file.read.
0
Wolkodav
607 / 460 / 32
Регистрация: 18.09.2012
Сообщений: 1,686
09.06.2013, 13:01 #4
А мне кажется вам однозначно пришлось бы их переписывать.
Ну смотрите, void*, указатель на начало "файла", вам наверное известен размер файлы, вот и бегите по файлу. Перейти к следующему элементу в файле data++, а получить данный *data( только их надо преобразовывать). Если я правильно понял.
0
Pro_ha
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 32
09.06.2013, 13:33  [ТС] #5
Ну вот я думал, может можно не переписывая кучу кода просто подменить источник данных для обьекта std::ifstream.
0
Wolkodav
607 / 460 / 32
Регистрация: 18.09.2012
Сообщений: 1,686
09.06.2013, 13:45 #6
Возможно можно и так. Подождите, может другие чего дельного напишут.
0
09.06.2013, 13:45
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.06.2013, 13:45
Привет! Вот еще темы с ответами:

Работа с памятью - C++
Есть приложение,в нем есть label'ы. Есть ли какая-нибудь возможность средствами C++ допустим, перевести эти контролы? Если есть - дайте...

работа с памятью - C++
a) Статическая память. Двумерный массив. Дан массив целых чисел. В массиве есть отрицательные числа. Определить координаты левого нижнего...

Работа с памятью - C++
Всем привет! Не могу разобраться, как написать код программы, которая моделирует механизм виртуальной памяти. Кто сможет реализовать хотя...

работа с памятью - C++
Доброго времени суток! У меня возникло затруднение - нужно реализовать на языке Си программу,демонстрирующую распределение памяти таким...


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

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

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