gpt4 book ai didi

c++ - 带参数的 std::basic_ostream

转载 作者:行者123 更新时间:2023-11-28 01:44:51 24 4
gpt4 key购买 nike

我想知道如何在 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;
}

最佳答案

您可以通过流操纵器将自定义行为添加到标准流类中。

但是我个人觉得这个开销太大了。我的建议是定义一个接受参数和 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 的友元类。使用它就像这样简单:

cout << FormattedFamilia(7, familia);

关于c++ - 带参数的 std::basic_ostream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45561857/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com