我需要在Debian Linux上编译的C ++程序中读取在Windows中创建的txt文件。不幸的是我的行尾分隔符有问题。我知道在Linux和Windows中,行指示符的结尾是不同的。因此,在Linux中,我的C ++程序读取类似“correct_line ^ M”的内容。
我的问题:如何在Linux中正确读取我在Windows中创建的文件? 我是否需要手动将其转换为Linux表示形式(我想避免它)?
谢谢。
答案 0 :(得分:3)
你必须自己做。 (IMNO,一个好的图书馆会这样做
如果在文本模式下打开,则自动在filebuf
中。但是图书馆
我不熟悉。)
根据您正在做的事情,可能无关紧要。任何线路导向 无论如何输入应该接受尾随空格,并且额外的0x0D 人物是白色空间。所以除编辑外,通常不会 物质
如果要在写入文件时抑制额外的0x0D(在 Windows),只需以二进制模式打开文件。就此而言,何时 文件的可移植性是一个问题,打开它通常是个好主意 以二进制模式文件,并编写协议的任何约定 需要。 (使用两个字符序列0x0D,0x0A或多或少 标准,是大多数互联网协议规定的。)阅读时, 再次,以二进制模式打开,并编写您的代码以接受任何 通常的约定:两个字符序列0x0D,0x0A或者a 单个0x0D或单个0x0A。 (这可以通过过滤来完成 流缓冲。)
答案 1 :(得分:0)
您可以运行dos2unix
。它会转换你的文件。