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

Как лучше читать из буфера void*? - C++

Восстановить пароль Регистрация
 
c-villain
0 / 0 / 0
Регистрация: 03.12.2010
Сообщений: 9
09.12.2010, 23:56     Как лучше читать из буфера void*? #1
hi
проблема в следующем, не знаю как сделать лучше:
есть буффер типа void*, нефикс размера... в него я принимаю сообщение... знаю длину всего сообщения...
сообщение разбито на блоки по следующему формату: сначала идет размер блока (размер этого размера задан, пусть он будеи int-овый), далее инфа с блоком этого размера, далее опять размер блока, и опять блок с инфой, и, наконец, последний блок...
Вопрос, посоветуйте, как грамотнее извлекать все это? заранее спасибо)))
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2010, 23:56     Как лучше читать из буфера void*?
Посмотрите здесь:

Что лучше читать Программирование: принципы и практика - Страуструпа или ООП в С++ - Лафоре C++
Что лучше читать книги по С++ в оригинале или переводе? C++
Как из С++ передать данные в текстовый файл? и как читать текстовые файлы в С++? C++
C++ Как читать с файла каждую строку как структуру
C++ Как строится ветвление, как читать данные, введённые с клавиатуры, как их потом применять
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
09.12.2010, 23:59     Как лучше читать из буфера void*? #2
А куда вы хотите записать "инфу с блоком этого размера"?
c-villain
0 / 0 / 0
Регистрация: 03.12.2010
Сообщений: 9
10.12.2010, 00:01  [ТС]     Как лучше читать из буфера void*? #3
куда записать - не принципиально... куда угодно... можно наверн в динамический буфер...
просто, думаю, может какой-то красивый метод есть...
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
10.12.2010, 00:29     Как лучше читать из буфера void*? #4
Ну вообще, оно и так в динамическом буфере, на который указывает полученный void*.
C++
1
2
3
4
5
6
7
8
9
10
11
void* result;
long int total_length;
 
// тут надо хитро убедиться, что размер типа указателя
// соответствует размеру "размера блока инфы".
// для примера беру int.
int* block_len = static_cast<int*>(result);
// указатель на первый символ "инфы"
char* data = static_cast<char*>(static_cast<void*>(block_len + 1);
// указатель на следующий размер блока
int* next_length = static_cast<int*>(static_cast<void*>(b+*length));
c-villain
0 / 0 / 0
Регистрация: 03.12.2010
Сообщений: 9
10.12.2010, 00:31  [ТС]     Как лучше читать из буфера void*? #5
отлично, спасибо...))) так и начал делать...
что такое static_cast?
lemegeton
 Аватар для lemegeton
2910 / 1339 / 133
Регистрация: 29.11.2010
Сообщений: 2,720
10.12.2010, 00:40     Как лучше читать из буфера void*? #6
Новое статическое типизирование.
Yandex
Объявления
10.12.2010, 00:40     Как лучше читать из буфера void*?
Ответ Создать тему
Опции темы

Текущее время: 01:27. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru