Windows和Linux之间的行分隔符转换结束

时间:2012-05-18 10:09:05

标签: c++ linux

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

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

谢谢。

2 个答案:

答案 0 :(得分:3)

你必须自己做。 (IMNO,一个好的图书馆会这样做 如果在文本模式下打开,则自动在filebuf中。但是图书馆 我不熟悉。)

根据您正在做的事情,可能无关紧要。任何线路导向 无论如何输入应该接受尾随空格,并且额外的0x0D 人物是白色空间。所以除编辑外,通常不会 物质

如果要在写入文件时抑制额外的0x0D(在 Windows),只需以二进制模式打开文件。就此而言,何时 文件的可移植性是一个问题,打开它通常是个好主意 以二进制模式文件,并编写协议的任何约定 需要。 (使用两个字符序列0x0D,0x0A或多或少 标准,是大多数互联网协议规定的。)阅读时, 再次,以二进制模式打开,并编写您的代码以接受任何 通常的约定:两个字符序列0x0D,0x0A或者a 单个0x0D或单个0x0A。 (这可以通过过滤来完成 流缓冲。)

答案 1 :(得分:0)

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