我正在编写在Windows中运行的代码并输出一个文本文件,该文件稍后将成为Linux中程序的输入。当给定的文件具有CR + LF而不仅仅是LF的新行时,此程序行为不正确。
我知道我可以使用像dos2unix这样的工具,但我想跳过额外的步骤。是否有可能在Windows中使用Linux换行符而不是Windows换行符?
答案 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。让支持者们更加快乐。