【问题标题】:Apply a facet to all stream output, use custom string manipulators将构面应用于所有流输出,使用自定义字符串操纵器
【发布时间】:2015-12-05 11:06:57
【问题描述】:

我想创建一个适用于所有流式文本输出的自定义方面,并访问操作流的内部可扩展数组(即通过 iword)。

如果我只对让自定义字符串操纵器对数字进行操作感兴趣,我可以执行如下所述的操作: C++ custom stream manipulator that changes next item on stream

如果我不需要访问 iosbase,我可以使用 codecvt 的 do_out 方法,如下所述: How to easily indent output to ofstream?,但我无法在 codecvt 方面访问流的 ios_base(据我所知)。

有没有办法定义将在所有流输出上调用的自定义方面,就像 codecvt 的情况一样,但是我可以访问 ios_base& 的情况是 num_put 的情况?有没有办法可以访问当前正在应用 codecvt 方面的流?

【问题讨论】:

  • 这闻起来像 XY 问题。你到底想达到什么目标?

标签: c++ locale facet


【解决方案1】:

我可能对这个问题有一个解决方案,但我不确定在 stackExchange 中引用外部链接/引用的政策/指南是什么。

我创建了一个自定义 streambuf 对象 (creating an ostream),其中包含用于流处理的字符的二级存储。

我查看了您的 github 源代码——并且想知道,当您创建 indent_facet 时,是否可以将流传递给 indent_facet 构造函数;然后使用该指针获取streambuf;通过那个,二级商店?

就像我说的,我对我的想法有更详细的描述。

谢谢,

汤姆

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-05
    • 2011-09-22
    • 2015-09-18
    • 2012-10-11
    • 2017-01-17
    相关资源
    最近更新 更多