сериализация — сериализация объекта с помощью Boost для именованных каналов в переполнении стека

Я пытаюсь сериализовать некоторые данные ЭЭГ из приложения командной строки, используя библиотеку Boost для сериализации, и отправляю эти сериализованные данные через именованный канал в форму пользовательского интерфейса, встроенную в Visual Studio C ++ 2010.

Из руководства по повышению библиотеки я могу сериализовать мою структуру данных, и, http://www.boost.org/doc/libs/1_48_0/libs/serialization/doc/tutorial.html#simplecase

Из этого руководства по именованным каналам Win32 я могу создавать каналы и отправлять текст между приложениями.
http://avid-insight.co.uk/joomla/component/k2/item/589-introduction-to-win32-named-pipes-cpp?tmpl=component&печать = 1

Учебное пособие по буст-библиотеке сериализуется для текстового файла

std::ofstream ofs("filename");

// create class instance
const gps_position g(35, 59, 24.567f);

// save data to archive
{
boost::archive::text_oarchive oa(ofs);
// write class instance to archive
oa << g;
// archive and stream closed when destructors are called
}

Я хочу знать, что мне нужно сериализовать для отправки моей структуры данных по именованному каналу? Библиотеке IOstream c ++, кажется, всегда нужен файл для потоковой передачи в / из?http://www.cplusplus.com/reference/iostream/

Я не хочу сериализовать файл, и я не уверен, что сериализовать? Я был бы очень признателен, если бы вы могли сказать мне, к чему мне нужно сериализоваться, и было бы здорово, если бы вы сказали мне, потребуется ли другая команда boost, кроме boost :: archive ::text_oarchive , так как я не смог найти альтернативу.

Спасибо за ваше время! Это действительно ценится!

(Этот вопрос задавался ранее: Сериализовать и отправить структуру данных с помощью Boost? , но человеку сказали не использовать повышение, так как из-за его простой структуры данных было бы слишком много накладных расходов, так что это действительно все еще плавно.)

1

Решение

Спасибо ForEveR, очень просто, не знаю, как я это пропустил! 🙂 Решение в контексте с двумя учебниками, размещенными выше:

    const EEG_Info g(35, 59, 24.567f);
std::stringstream MyStringStream ;
boost::archive::text_oarchive oa(MyStringStream);
// write class instance to archive
oa << g;
// This call blocks until a client process reads all the data

string strData;
strData = MyStringStream.str();DWORD numBytesWritten = 0;
result = WriteFile(
pipe, // handle to our outbound pipe
strData.c_str(), // data to send
strData.length(), // length of data to send (bytes)
&numBytesWritten, // will store actual amount of data sent
NULL // not using overlapped IO
);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]