std :: ostreambuf_iterator и std :: cout нельзя использовать вместе - PullRequest
0 голосов
/ 06 апреля 2020

Я пытаюсь написать код, чтобы понять, как использовать std :: ostreambuf_iterator:

#include <string>
#include <algorithm>
#include <iterator>
#include <iostream>
#include <sstream>

int main()
{
    std::cout << "Hello Boy";
    std::ostreambuf_iterator<char> s2(std::cout);
    std::cout << " s2 = " << *s2 << std::endl;
}

Но компиляция не удалась, указав, что «нет оператора << соответствует операндам» - нельзя ли использовать << в ostreambuf_iterator ? Тогда как мы можем напечатать значения, хранящиеся в итераторе? </p>

1 Ответ

2 голосов
/ 06 апреля 2020

Вы не можете читать из выходного потока, поэтому итератор выходного потока не может вернуть ничего значащего из operator*.

Тогда как мы можем напечатать значения, хранящиеся в итераторе?

Итератор не содержит никаких данных. Он записывает поток, который был ему предоставлен, когда вызывается operator=.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...