2014-09-21 1 views
-2

Каков наилучший способ преобразования void * в stringstream? Мне нужно преобразовать входящие данные завихрения, чтобы их можно было проанализировать.Convert void * to stringstream

я сделал следующее, и это, кажется, работает, но я уверен, что есть лучший способ

void ProcessData(void* data, size_t datalength) 
{ 
    if(data != nullptr) 
    { 
     std::stringstream ssdata; 
     ssdata << (char*)data; 
    } 
} 

EDIT Мой вопрос является частью более крупной проблемы, которые у меня есть. У меня есть локон перезванивают, который постоянно предоставляет мне данные MIME, где на каждый вызов обратно я должен проанализировать данные и отыскать

  1. граничную строку, например, «MYBOUNADRY», а затем

  2. Анализировать для строки длины содержимого, например «Content Length = 1400»

  3. А затем скопировать данные, которая начинается сразу после Content Длина строки для 1400 байт в другой буфер данных

Но из-за разделения на порции характера данных обратные вызовы изображение данные могут быть в одном обратном вызове или распределены по двум обратным вызовам, поэтому я должен постоянно анализировать каждый входящий фрагмент данных.

+1

Это не будет работать, если данные содержат 0 в середине. Итак, вы хотите преобразовать данные в строку, почему? Гораздо лучше разобрать его, как есть, без преобразования. –

+0

Ответ зависит от содержимого вашего 'void *' (то есть, где он указывает, charset и т. Д.) – deviantfan

+0

данные void * будут содержать текст в начале, а затем данные изображения в качестве его MIME-данных. Поэтому я хочу разобрать текст в начале –

ответ

2

Вы можете использовать stringstream::write(const char* s, size_t count):

std::stringstream ssdata; 
ssdata.write((const char*) data, datalength); 
… 

Но не свернуться вызвать обратный вызов повторно для каждого фрагмента? Тогда вам придется добавить больше логики.

+0

Да, он повторно перезвон для каждого фрагмента. Да, мне нужно будет добавить еще логику :( –

+0

Также попробуйте ответить на этот вопрос: http://stackoverflow.com/a/7782037/. Кажется, это намного лучше, но также не устраняет проблему с помехами. – kay