template<typename T, typename F, typename L>
void print(const T& s, F first, L last)
{
os << s << " = (\n";
os << charInput1;
std::copy(first, last, std::ostream_iterator<int>(std::cout, "\n"));
os << charInput2;
os << "\n)";
}
Я пытаюсь выполнить заказную печать cout. Эта функция-член принадлежит классу CustomPrinter
, а charInput1
и charInput2
являются его частными членами char
, которые определяются при создании пользовательского принтера. Предполагаются итераторы first
и last
, а s
- строка.C++ basic custom cout printing to consle
Так, например, при charInput1
является +
знаком, и charInput2
является периодом .
, я бы ожидать, что конечный результат будет следующим, учитывая std::vector<int> = {1, 1, 1}
:
(
+1.
+1.
+1.
)
Но я получаю
Так что мой вопрос в том, что еще нужно для печати заданного char
между каждым элементом вектора? Можно ли использовать только std::ostream_iterator<int>(std::cout, /* char here? */)
? Поскольку кажется, что этот метод может только вставлять строки между ними, мне также нужно вставить их. Если нет, то какой может быть лучший подход? Заранее спасибо!
Edit: В моем основном я имею
CustomPrinter cp(std::cout, '+', '.');
std::vector<int> v = {1, 1, 1};
cp.print("result", v.begin(), v.end()); // function call..
Опубликовать полный, компилируемый пример того, как вы называете эту функцию. –
@latedeveloper Привет, Я добавил, как была вызвана функция. – user3941584
Почему вы жестко закодировали '' в качестве имени для 'ostream_iterator'? Разве это не из шаблона класса? –
Barmar