标准::basic_ostream参数
std::basic_ostream with parameter
我想知道如何在 std::中插入参数basic_ostream 我一直在努力,但我不能
我需要插入一个参数来选择要从 arista 中打印哪些值 插入参数后,下一步很容易,因为它只是一个 if 条件
template <typename charT>
friend std::basic_ostream<charT> &operator << (
std::basic_ostream<charT>& out, Familia &familia
) {
out << "t Relacionesn";
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++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 函数调用中参数的顺序重要吗
- 部分定义/别名模板模板参数
- 模板-模板参数推导:三个不同的编译器三种不同的行为
- 使用不带参数的函数访问结构元素
- 重载 ostream << 运算符,指针作为参数,导致输出上的内存地址
- 转发到 std::ostream <<时操纵器的模板参数推断失败
- C++ 重载 ostream 不适用于带有空参数的默认构造
- 无法使用 ostream << 字符串流重载 参数 1 没有已知的转换
- 带有数组的 istream / ostream 参数
- 将模板参数插入到ostream中
- operator<<(ostream&, const BigUnsigned<I>&) 必须只接受一个参数
- (ostream&outs)在类函数参数C++
- Std::ostream作为可选(!)函数参数