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

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

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

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

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

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

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

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

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

Работа с памятью - C++
Нужно ривести пример использования операторов new и delete для выделения памяти под двумерный массив и освобождения памяти двумерного...

Работа с памятью - C++
Добрый день всем. Я только начал изучение C#(раньше работал c: C++ маленько -т.е. общее представление о нем имею) и у меня вопрос, можно...

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

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

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

Работа с памятью - C++
Всем доброго времени суток. Почитав данный форум и проч. пришёл к выводу, что мой проект на C# нереален в виду бестолковой работы с...

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


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
09.06.2013, 11:23     Работа с памятью как с файлом #2
Ну вот передавайте в фунцкию указатель на начало. Вам известен размер? Если да, то пока не достигнут конец файла уваличивайте уазатель( просто ++). А что бы получить данный из "файла" надо произвести разыменование указателья.
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.
Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
09.06.2013, 13:01     Работа с памятью как с файлом #4
А мне кажется вам однозначно пришлось бы их переписывать.
Ну смотрите, void*, указатель на начало "файла", вам наверное известен размер файлы, вот и бегите по файлу. Перейти к следующему элементу в файле data++, а получить данный *data( только их надо преобразовывать). Если я правильно понял.
Pro_ha
1 / 1 / 0
Регистрация: 07.06.2013
Сообщений: 32
09.06.2013, 13:33  [ТС]     Работа с памятью как с файлом #5
Ну вот я думал, может можно не переписывая кучу кода просто подменить источник данных для обьекта std::ifstream.
Wolkodav
601 / 454 / 32
Регистрация: 18.09.2012
Сообщений: 1,685
09.06.2013, 13:45     Работа с памятью как с файлом #6
Возможно можно и так. Подождите, может другие чего дельного напишут.
Yandex
Объявления
09.06.2013, 13:45     Работа с памятью как с файлом
Ответ Создать тему
Опции темы

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