我探索了一些程序的源代码并偶然发现:
// 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( ) );
这是什么意思?
答案 0 :(得分:1)
以unix和windows结尾的行是不同的。这样做是为了使用在特定系统中结束的合适行。您可能会看到here知道结尾的行。
答案 1 :(得分:1)
在物理上,不同的系统代表新的线条角色
在文本文件中不同。这有时会导致
文件写在一个系统上的困难,是
正在读另一个。在大多数情况下,文件写为文本
一个系统甚至不能在另一个系统上读取。该
主要的例外是Windows和Unix(以及Mac OS,我认为,
然而,甚至在它之前);在所有这些系统上,
文件只是一个字节序列,每个系统都由
约定,使用一个或两个字符的简单序列
代表一个行结束(或行分隔符---约定不是
在Windows下清除)。如果这些是唯一的目标系统
(这对许多程序来说都是如此),那么它是可能的
读取文件,分成行,但你可能会得到一些额外的
行中的字符(最常见的是,另外'\r\
如果文件是在Unix下读取的话,在每一行的末尾
在Windows下编写)。您引用的代码就是尝试
以极其谨慎的方式删除这些字符。