【问题标题】:C++ stdin and stdout conversion between CR+LF and LF and CRCR+LF与LF和CR之间的C++标准输入和标准输出转换
【发布时间】:2013-05-25 18:36:46
【问题描述】:

好的,我正计划制作一个文件来存储我将要导入到程序中的数据。该程序将针对 Linux、Windows 和可能的 Mac 进行编译。

现在我真正想知道的是,由于这些文件中的换行符,我是否需要这些数据文件略有不同,或者 stdin 对我使用的系统不挑剔?

会不会有问题?如果是这样,克服这些问题的正确方法是什么?还有其他我可能忽略的问题吗?

【问题讨论】:

  • 我猜您希望能够在平台之间传输这些文件?
  • 对不起,我没有说清楚吗?是的,我想知道在 Windows 上使用标准输入编译的程序是否会将 LF 和 CR LF 视为同一事物。
  • 阅读这里,需要打开二进制格式的文件:stackoverflow.com/questions/11305479/…

标签: c++ linux windows stdin lf


【解决方案1】:

如果程序不打算被用户阅读,只需确保以与输入相同的形式输出它。在这种情况下,使用二进制格式可能更容易。

无论如何,请确保将流设置为二进制,否则 Windows 可能会将 \n 扩展为 \r\n 以用于文本流。

另外,对于旨在供用户阅读的文本文件,以与平台无关的方式克服此问题的最简单方法之一是将所有相邻的 \r 和 \n 字符作为单行结尾,并且您不必担心如何输出它。

【讨论】:

  • 谢谢你,这正是我想知道的。问题已回答。
猜你喜欢
  • 1970-01-01
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
  • 1970-01-01
相关资源
最近更新 更多