【问题标题】:output stream in C++ [duplicate]C ++中的输出流[重复]
【发布时间】:2020-11-25 00:22:15
【问题描述】:

如果我打开了这样的输出流:

    ofstream to(output_file);

如何打印换行符(希望支持不同的操作系统)?

【问题讨论】:

  • 请注意,to << "" << endl; 与此处的 to << endl; 相同。
  • @scohe001 我问的是ofstream
  • 它们都是输出流。它们都具有相同的语义。
  • 我仍然不明白为什么人们以空格结尾,然后换行,而不是换行。

标签: c++


【解决方案1】:

行尾符号,'\n' 用于我所知道的大多数系统中,除了使用 '\r\n' 的 Windows (MS Dos)。这两者之间的不同之处在于,大多数系统中的 '\n' 会将光标返回到新行的开头,而在 MS DOS 中,它将转到与前一行相同的字符,所以如果你有这样的东西:

Hello\nWorld!!!

在大多数系统中它会输出:

Hello
World!!!

在 MS DOS 中它将输出:

Hello
     World!!!

因此,为了克服不同系统处理换行符不同的问题,我们有std::endl,它将为正确的系统放置正确的符号。在我的代码中我可能很糟糕,但我主要使用'\n',但另一方面,我并没有将 Windows 用作我的开发机器。

还有一点,打印出""是没用的。

【讨论】:

  • @CherryDT ok 会解决这个问题。
  • 实际上,根据 ASCII 定义,'\n' 是换行符(LF),'\r' 是回车符(CR)。回到电传打字机时代,CR 会将马车返回到左边距。如果你没有使用 LF 推进一行,你可以覆盖文本。这就是一些 ASCII 艺术作品的工作方式以及粗体的工作方式。后来,一些 nix 爱好者决定使用 LF 作为行尾来节省一些字符,这就是他们的决定。 Windows 和其他控制台决定同时使用 CR 和 LF。 *大多数系统的定义取决于营销和销售。你可以只使用 LF 在 Windows 上拥有一个终端。
  • @ThomasMatthews 好点,我知道大部分这些事实,但我不记得了,如果我没记错的话,在 Unix 之前还有其他东西在使用 '\n' 来做这两件事。我可能错了,因此我不想说 Unix 正在使用 '\n'。
猜你喜欢
  • 2017-05-19
  • 2014-03-20
  • 2023-03-23
  • 1970-01-01
  • 1970-01-01
  • 2010-12-03
  • 2013-07-07
  • 1970-01-01
  • 2016-10-17
相关资源
最近更新 更多