繁体   English   中英

Windows和Linux之间的行定界符转换的结尾

[英]End of the line delimiter conversion between Windows and Linux

我需要阅读在Windows中以C ++程序创建的txt文件,该文件是在Debian Linux上编译的。 不幸的是,我对行定界符的结尾有疑问。 我知道在Linux和Windows中,行尾指示器不同。 因此,在Linux中,我的C ++程序读取的内容类似于“ correct_line ^ M”。

我的问题:如何在Linux中正确读取在Windows中创建的文件? 我是否需要手动将其转换为Linux表示形式(我想避免这种情况)?

谢谢。

您必须自己做。 (IMNO,如果以文本模式打开,一个好的库会在filebuf自动执行该操作。但是我不熟悉的库却没有。)

取决于您在做什么,这可能并不重要。 任何面向行的输入无论如何都应接受尾随空白,并且额外的0x0D字符为空白。 因此,除了编辑人员外,通常都没有关系。

如果要在写入文件时抑制多余的0x0D(在Windows下),只需以二进制模式打开文件即可。 因此,当需要考虑文件的可移植性时,以二进制模式打开文件并编写协议要求的任何约定通常是个好主意。 (使用两个字符序列0x0D或多或少是标准的0x0A,这是大多数Internet协议指定的标准。)再次读取时,以二进制模式打开,并编写代码以接受任何惯用的约定:两个字符序列0x0D,0x0A或单个0x0D或单个0x0A。 (这可以通过过滤streambuf来完成。)

您可以运行dos2unix 它将转换您的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM