Я хочу вывести содержимое ostringstream
в другой поток (например, std::cout
). Я знаю, что могу использовать std::ostringstream::str()
, но предполагаю, что это накладные расходы на копирование содержимого потока в строку, а затем в другой поток. Я обнаружил, что могу использовать std::ostringstream::rdbuf()
(Комментарий, предполагающий, что у него 25 голосов). Но он ломается std::cout
, как показано в выходных данных тестовой программы ниже. Я делаю что-то неправильно?
#include <iostream>
#include <sstream>
int main(int argc, char const *argv[])
{
std::ostringstream ss;
ss << "some data" << std::endl;
std::cerr << std::cout << std::endl;
std::cout << "start" << std::endl;
std::cout << ss.str();
std::cout << ss.rdbuf();
std::cout << "end" << std::endl;
std::cerr << std::cout << std::endl;
return 0;
}
Результаты в:
0x6013b8
start
some data
0
str()
, как вы предложили. - person Micha Wiedenmann   schedule 21.05.2013