I haven't experimented much with C++ style iostream manipulators, so I'm not sure what the problem is here. I have a data buffer type class which contains a raw byte array. I want the output to be in hexidecimal format.
So I overloaded the ostream << operator like this:
inline std::ostream& operator << (std::ostream& strm, const data_buffer& db)
byte* p = db.m_data.storage, *end = p + db.m_size;
while (p < end)
strm << std::hex << std::uppercase << static_cast<unsigned> (*p++) << " ";
This works, except if I use the endl modifier, the program crashes with a segmentation fault, i.e. doing
// fill db with some data
cout << db << endl;
...will make the program crash with a segfault. Without the endl modifier, it works fine.