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

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

我知道我可以使用像dos2unix这样的工具,但我想跳过额外的步骤。 是否有可能在Windows中获得一个C ++程序来使用Linux新行而不是Windows?

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

你怎么做取决于你如何打开文件。

使用fopen

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

使用ofstream

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

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

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

在那里,做到了,切换到XML。 让支持的人更快乐。