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

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

Войти
Регистрация
Восстановить пароль
 
c-villain
0 / 0 / 0
Регистрация: 03.12.2010
Сообщений: 9
#1

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

09.12.2010, 23:56. Просмотров 399. Ответов 5
Метки нет (Все метки)

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

Как лучше читать книги? - C++
Подскажите пожалуйста, каким образом лучше читать книги по Си++: мало книг, но долго и вдумчиво или расслаблено читать много книг без...

Typedef void (WINAPI *GLEND)(void), как вызывать? - C++
импортирую метод GLEND glmethod = (GLEND) GetProcAddress(hModule, "glEnd"); как его теперь коректно вызвать: typedef void...

Что лучше читать книги по С++ в оригинале или переводе? - C++
Если говорить конкретнее, речь идет о серии C++ In-Depth. Я вот склоняюсь ко мнению, что оригинал лучше, т.к. иногда переводят как то по...

Что лучше читать Программирование: принципы и практика - Страуструпа или ООП в С++ - Лафоре - C++
Вот хочу научиться программировать, пошел я в библиотеку и взял две книги по программированию на С++(кроме них не фига не было по С++) ...

Дважды вычислить значение выражения, используя функции возвращающие void и не void - C++
Хай!Помогите решить Дважды вычислить значение выражения, используя функции возвращающие void и не void....

Что значит void(*f)()=(void(*)()func? - C++
void(*f)()=(void(*)())func; Объясните, пожалуйста, что значит этот код.

5
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
09.12.2010, 23:59 #2
А куда вы хотите записать "инфу с блоком этого размера"?
0
c-villain
0 / 0 / 0
Регистрация: 03.12.2010
Сообщений: 9
10.12.2010, 00:01  [ТС] #3
куда записать - не принципиально... куда угодно... можно наверн в динамический буфер...
просто, думаю, может какой-то красивый метод есть...
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
10.12.2010, 00:29 #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));
2
c-villain
0 / 0 / 0
Регистрация: 03.12.2010
Сообщений: 9
10.12.2010, 00:31  [ТС] #5
отлично, спасибо...))) так и начал делать...
что такое static_cast?
0
lemegeton
2925 / 1354 / 135
Регистрация: 29.11.2010
Сообщений: 2,725
10.12.2010, 00:40 #6
Новое статическое типизирование.
0
10.12.2010, 00:40
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.12.2010, 00:40
Привет! Вот еще темы с ответами:

delete или new (typeid(void*))(void*) - C++
Доброе время суток. Пишу список. Телом каждого элемента (el) списка является void указатель(body). (предполагается что тело элемента...

Error C2084: функция "void mehanizm:print(void)" уже имеет текст реализации - C++
Добрый день, я столкнулся с проблемой вывода элемента на экран, выбивает: &quot;error C2084: функция &quot;void mehanizm::print(void)&quot; уже имеет...

Наследование vs Композиция vs Агрегация: что лучше выбрать? Как лучше передавать объекты в функции? - C++
Добрый день!! Дело вот в чём, я хочу создать класс, внутри которого будут созданы объекты других классов (реализованных в некоторой...

Как строится ветвление, как читать данные, введённые с клавиатуры, как их потом применять - C++
Здравствуйте, уважаемые программисты! Не могли бы вы мне помочь? Мне 11 лет, и я учусь программировать на С++. Расскажите мне о...


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

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

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