【问题标题】:Are there good examples of good C++ I/O usage是否有良好的 C++ I/O 使用示例
【发布时间】:2010-12-10 11:16:14
【问题描述】:

我大量参与在 C++ 中执行 I/O(目前使用它来打印标题、表格、一些数据对齐),并且想知道它在开源项目或一般示例/摘要中的正确/出色用途

我使用这样的东西:

cout.setf(ios::right,ios::jyustified);
cout<<std::setw()

std::copy (vector.begin(), vector.end(), std::osteam_iterator<const Foo *>
              std::cout,"\n");  //provided I have  operator <<  in/for Foo

locale mylocale(""); 
cout.imbue( mylocale );

我不喜欢我当前的实现,因为我有很多强制的(\t)spaces 以确保正确缩进。因此,我想看看顶尖专业人士如何使用 I/O。

【问题讨论】:

  • 打印到哪里?纸?只有控制台?屏幕?
  • 我在屏幕上做,但对两者都感兴趣,文件控制台....纸?

标签: c++ stl io


【解决方案1】:

对于您问题的缩进部分:“过滤器”的概念(例如,在 Boost.IOStreams 库中实现)在这方面非常有用且功能强大。例如,请参阅此answer

【讨论】:

    【解决方案2】:

    一个非常有用的东西是 Boost IO state saver library。这提供了(特别是)一种处理“粘性”标志的干净方法。

    不过,我倾向于同意 David Seiler 的观点 - 很少有人会对通过仅编写文本获得的单一字体等纯文本输出感到满意。然而,HTML 很容易生成。然而,RAII 可以很好地处理固定结构的文档,以确保您始终生成正确嵌套的标签。

    【讨论】:

      【解决方案3】:

      如果您想以某种易于阅读的方式格式化数据,请考虑发出某种结构化文档格式(例如 html 或 pdf),而不是纯文本加空格和制表符。这个问题不是特定于 C++ I/O 的,并且不能通过巧妙地使用 &lt;stdio&gt; 来真正解决。

      【讨论】:

        猜你喜欢
        • 2012-10-21
        • 1970-01-01
        • 1970-01-01
        • 2015-05-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-08-19
        相关资源
        最近更新 更多