Windows和Linux之间的文件差异

时间:2014-01-29 12:11:04

标签: c++ linux windows

我探索了一些程序的源代码并偶然发现:

// remove newlines and partial newlines to help fix issues with Windows formatted config files on Linux systems

            Line.erase( remove( Line.begin( ), Line.end( ), '\r' ), Line.end( ) );
            Line.erase( remove( Line.begin( ), Line.end( ), '\n' ), Line.end( ) );

这是什么意思?

2 个答案:

答案 0 :(得分:1)

以unix和windows结尾的行是不同的。这样做是为了使用在特定系统中结束的合适行。您可能会看到here知道结尾的行。

答案 1 :(得分:1)

在物理上,不同的系统代表新的线条角色 在文本文件中不同。这有时会导致 文件写在一个系统上的困难,是 正在读另一个。在大多数情况下,文件写为文本 一个系统甚至不能在另一个系统上读取。该 主要的例外是Windows和Unix(以及Mac OS,我认为, 然而,甚至在它之前);在所有这些系统上, 文件只是一个字节序列,每个系统都由 约定,使用一个或两个字符的简单序列 代表一个行结束(或行分隔符---约定不是 在Windows下清除)。如果这些是唯一的目标系统 (这对许多程序来说都是如此),那么它是可能的 读取文件,分成行,但你可能会得到一些额外的 行中的字符(最常见的是,另外'\r\ 如果文件是在Unix下读取的话,在每一行的末尾 在Windows下编写)。您引用的代码就是尝试 以极其谨慎的方式删除这些字符。