title: What's the clue to make stringstream write binary?
body: <p>What I'm trying to do is, make the class message serialize and deserialize it's self. Not into or from a file, but into or from a binary sequence as a string or cstring.</p>
  
  <p>Message.h:</p>
  
  <pre><code>class Message
  {
  private:
      int message_id;
      int sender_id;
  
      std::string sender_data;
  
      Message ();
  
  public:
  
      Message (int id, std::string data);
      virtual ~Message ();
  
      virtual const char* Serialize ();
      virtual void Deserialize (const char* buf);
  
      virtual void Print ();
  };
  </code></pre>
  
  <p>Message.cpp:</p>
  
  <pre><code>const char* Message::Serialize ()
  {
      char buf[1024];
  
  // This will work somehow. I get the object and then glibc 
  // detects double free or corruption, because i write into buf 
  // and not into a file.
  //    std::ofstream out_stream(buf, std::ios::binary);
  //    out_stream.write((char *)this, sizeof(*this));
  //    out_stream.close();
  
  //  Why this won't work? I didn't get it.
      std::stringstream out_stream(buf, std::ios::binary);
      out_stream.write((char *)this, sizeof(*this));
  
      std::string str(buf);
  
      std::cout &lt;&lt; str &lt;&lt; std::endl
                &lt;&lt; buf &lt;&lt; std::endl;
  
      return str.c_str();
  }
  
  void Message::Deserialize (const char* buf)
  {
      std::ifstream in_stream(buf, std::ios::binary);
      in_stream.read((char*)this, sizeof(*this));
      in_stream.close();
  }
  </code></pre>
  
  <p>Main:</p>
  
  <pre><code>#include "Message.h"
  
  int main (int argc, int argv[])
  {
      Message msg1(12345, "some data");
      Message msg2(12346, "some other data");
  
      msg1.Print();
      msg2.Print();
  
      msg2.Deserialize(msg1.Serialize());
  
      msg1.Print();
      msg2.Print();
  
      return 0;
  }
  </code></pre>
  
  <p>Output:</p>
  
  <p>Msg: 0 Client: 12345 Data: some data</p>
  
  <p>Msg: 1 Client: 12346 Data: some other data</p>
  
  <p>Msg: 0 Client: 12345 Data: some data</p>
  
  <p>Msg: 1 Client: 12346 Data: some other data</p>
  
  <p>Any suggestions?
  Greetings Mesha</p>