Как я могу получить данные, которые будут отправлены на стандартный вывод в C ++? - PullRequest
3 голосов
/ 16 апреля 2011

как я могу получить данные, которые будут отправлены на стандартный вывод в c ++?

Я нашел здесь:

   // This can be an ofstream as well or any other ostream
   std::stringstream buffer;

   // Save cout's buffer here
   std::streambuf *sbuf = std::cout.rdbuf();

   // Redirect cout to our stringstream buffer or any other ostream
   std::cout.rdbuf(buffer.rdbuf());

   std::cout << "Hello!";

   // When done redirect cout to its old self
   std::cout.rdbuf(sbuf);

   std::cout << "STD data: \n";
   std::cout << buffer.get();

И это не работает. «Hello» по-прежнему выводится до «STD data:», а buffer.get() возвращает «-1». Что не так?

1 Ответ

3 голосов
/ 16 апреля 2011

Запись:

  std::cout << buffer.str(); //not buffer.get();

Сейчас работает: http://ideone.com/W8mW8


Кстати, std::stringstream::get() возвращает std::istream. Смотрите это:

http://www.cplusplus.com/reference/iostream/istream/get/

Напомним, что std::stringstream происходит от std::istream. Так что не запутайся. : -)

...