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++基本定制cout打印到consle
因此,例如,给予charInput1
是+
迹象,charInput2
是一段.
,我希望最终输出为以下,给出一个std::vector<int> = {1, 1, 1}
:
(
+1.
+1.
+1.
)
但是我却越来越
(
+1
1
1
.
)
所以我的问题是,还需要什么才能打印给定的每个向量元素之间的char
?是否可以只使用std::ostream_iterator<int>(std::cout, /* char here? */)
?因为看起来这个方法只能在两者之间插入字符串,所以我还需要在之前插入字符串。如果不是,有什么更好的方法?提前致谢!
编辑:在我的主要我有
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