我想知道如何在std::basic_ostream中插入参数我一直在尝试但不能
我需要插入一个参数来选择要从arista打印哪些值。插入参数后,下一步很容易,因为它只是一个if条件
template <typename charT>
friend std::basic_ostream<charT> &operator << (
std::basic_ostream<charT>& out, Familia &familia
) {
out << "\t Relaciones\n";
for (Vertice<cedula, relacion> &vertice : familia) {
int per = vertice.getFuente();
for (Arista<cedula, relacion> &arista : vertice) {
out << per << "->";
out << arista.getDestino() << " es" << " " << arista.getValor() << "\n";
}
}
return out;
}发布于 2017-08-08 15:35:31
有一些方法可以通过流操纵器向标准流类添加自定义行为和状态。
但是我个人觉得这个开销太大了。我建议您定义一个接受参数和Familia引用的新类型,然后继续打印:
class FormattedFamilia {
Familia const& _to_print;
int _parameter;
public:
FormattedFamilia(int parameter, Familia const& to_print)
: _parameter(parameter), _to_print(to_print)
{}
template <typename charT>
friend std::basic_ostream<charT> &operator << (
std::basic_ostream<charT>& out, FormattedFamilia const & ff
) {
if(_parameter > 0) {
// do printing using out.
}
}
};当然,它必须是Familia的一个friend类。使用它就像这样简单:
cout << FormattedFamilia(7, familia);https://stackoverflow.com/questions/45561857
复制相似问题