C ++将换行符从CR + LF更改为LF

时间:2009-10-08 06:24:41

标签: c++ windows linux newline

我正在编写在Windows中运行的代码并输出一个文本文件,该文件稍后将成为Linux中程序的输入。当给定的文件具有CR + LF而不仅仅是LF的新行时,此程序行为不正确。

我知道我可以使用像dos2unix这样的工具,但我想跳过额外的步骤。是否有可能在Windows中使用Linux换行符而不是Windows换行符?

2 个答案:

答案 0 :(得分:26)

是的,您必须以“二进制”模式打开文件才能停止换行。

如何操作取决于您打开文件的方式。

使用fopen

FILE* outfile = fopen( "filename", "wb" );

使用ofstream

std::ofstream outfile( "filename", std::ios_base::binary | std::ios_base::out );

答案 1 :(得分:-2)

好的,所以这可能不是你想听到的,但根据我的经验,这是我的0.02美元:

如果您需要在不同平台之间传递数据,从长远来看,您最好使用不关心换行符的格式。如果是文本文件,用户有时会搞乱它们。如果通过弄乱行结束它们会导致应用程序失败,那么这将是一个支持密集型应用程序。

去那里,完成了,切换到XML。让支持者们更加快乐。