[英]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.