【问题标题】:printing using one '\n'使用一个 '\n' 打印
【发布时间】:2010-12-10 08:45:42
【问题描述】:

我很确定你们都熟悉 Big4 的概念,并且我在每个构造函数、赋值、析构函数和复制构造函数中都有一些内容要打印。

限制是这样的:

我不能在任何方法中使用多个换行符(例如,ƒn 或 std::endl)

我可以有一个名为 print 的方法,所以我猜 print 是我将放置那个珍贵的唯一的 '\n' 的地方,我的问题是方法 print 如何在我的每个元素上打印不同的东西想在 Big4 中的每一个打印?任何想法?可能是 Big4 超载?

【问题讨论】:

  • “Big4”是指“构造函数、赋值函数、析构函数和复制构造函数”,还是完全别的意思?
  • 我不知道 Big4 指的是什么,这个问题根本没有意义。有人能说得通吗?
  • 为什么每个方法不能使用多个换行符?是不是你的键盘出了什么问题,怕把回车键弄坏了?还是您的屏幕很小,无法一次看到所有代码?给自己一个更好的开发环境;与此同时,您的代码显然受到了影响。
  • Rob:新行是最昂贵的char - 你不知道吗?欧盟甚至计划在即将出台的指令中加入新税。

标签: c++ inheritance operators operator-overloading


【解决方案1】:

也许我不完全理解这个问题,因为它被问得很尴尬,但是你不能只有一个名为 newline 的函数,它接收一个 ostream 作为参数,然后简单地将 '/n' 打印到该输出流?然后你可以无限次调用它,同时仍然遵守任意的“换行符”规则。

例如

(编辑:删除代码,“闻起来像作业”)

【讨论】:

    【解决方案2】:

    print 应该采用一个包含要输出到屏幕的信息的参数(无 '\n'),然后调用 c++ 输出方法,并内联将 '\n' 附加到传入的信息中。

    注意:没有代码,因为这对我来说就像家庭作业......

    【讨论】:

    • 我同意这听起来确实像家庭作业,对使用代码有如此任意的限制。我已从答案中删除了代码 sn-p。
    • 好吧,方法 print 本身不带任何参数,这里是方法签名: print() 我也可以做类似 a.print() 的事情,它会打印出一些东西......跨度>
    • 那么 print() 方法是包含在赋值代码中的吗?你能分享一些代码吗?你能写额外的函数吗(也许重载 print() 方法?)
    【解决方案3】:

    我不确定我是否完全理解您要完成的工作。为什么只能使用一个换行符?是什么让你的代码中只有一个换行变得困难?例如,我以前做过这样的事情。

    for(int i = 0; i < 10; i++) {
        cout << i << " ";
    }
    cout << std::endl;
    

    如果您需要更复杂的东西,您可能想要制作某种打印跟踪器对象,该对象保留一个是否已打印换行符的标志,并相应地调整其行为。不过,这似乎有点过于复杂了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-11-22
      • 2010-10-07
      • 2012-06-26
      • 1970-01-01
      • 2012-04-15
      • 1970-01-01
      • 2012-06-17
      相关资源
      最近更新 更多