У меня есть функция в C ++, которая принимает поток в качестве ввода:
std::ostream& operator<<(std::ostream &o, XObj x);
, который печатает x
содержимое в o
.
Я написал оболочку для класса XObj
в C ++ / CLI, в которой есть функция для записи содержимого объекта в поток:
void XObj_wrapper::to_stream(System::IO::Stream ^s);
Функция-обертка создает std::stringstream
, вызывает operator<<
, описанный выше, чтобы заполнить поток строк, и, наконец, выводит содержимое потока строк в s
. Это работает, но меня беспокоит скорость функции: она сбрасывает содержимое обернутого объекта в промежуточную структуру данных (поток строк) и затем выводит его в s
.
У меня вопрос: можно ли это сделать эффективно, то есть без промежуточной структуры данных?