#include <sstream>
std::ostringstream buffer; // no growth specification necessary
buffer << "a char buffer" << customObject << someOtherObject;
std::string contents = buffer.str();
size_t bufferSize = contents.size();
rawNetworkSocket.Send(contents); // you can take the size in Send
Используя этот подход, вам придется анализировать результат там, где вы его получили (поскольку приведенный выше код просто преобразует ваши данные в неструктурированную строку.
Другая проблема с этим заключается в том, что, поскольку C ++ не 'Для поддержки рефлексии вам нужно определить оператор << для ваших объектов. Это код для <code>Custom класса:
template<typename C, typename T>
std::basic_ostream<C,T>& operator << (
std::basic_ostream<C,T>& out, const Custom& object)
{
out << object.member1 << "," << object.member2 /* ... */ << object.memberN;
return out;
}
Если вы хотите структурированную сериализацию, посмотрите на boost:: сериализации .