Указатель на поток оставит висячий указатель, однако вы можете скопировать строку:
const std::string s = ss.str();
И затем указать на нее const char*
:
const char *ptrToBuff = s.c_str();
В ваша serialize
функция, вы должны использовать оператор <<
для записи в ostream:
os << r1 << " " << sizeof(r1) << std::endl;
os << r2 << " " << sizeof(r2) << std::endl;
Таким образом, весь код будет: ( см. здесь )
void serialize(std::ostream& os)
{
int r1 = 10;
int r2 = 12;
os << r1 << " " << sizeof(r1) << std::endl;
os << r2 << " " << sizeof(r2) << std::endl;
}
int main()
{
std::stringstream ss;
serialize(ss);
std::cout<<"Buffer length : " << ss.str().length() <<'\n';
const std::string s = ss.str();
const char *ptrToBuff = s.c_str();
std::cout << ptrToBuff;
}