我正在编写在Windows中运行的代码,并输出一个后来成为Linux中程序输入的文本文件。当给定文件的换行符是CR + LF而不是LF时,此程序的行为不正确。C++将换行符从CR + LF更改为LF
我知道我可以使用像dos2unix这样的工具,但我想跳过额外的步骤。是否有可能在Windows中获得一个C++程序来使用Linux新行而不是Windows?
我正在编写在Windows中运行的代码,并输出一个后来成为Linux中程序输入的文本文件。当给定文件的换行符是CR + LF而不是LF时,此程序的行为不正确。C++将换行符从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);
OK,所以这可能不是你想要听到的,但这里是我的$ 0.02根据我这样的经历:
如果你需要在不同的平台之间传递数据,从长远来看,你最好使用一种不关心换行符的格式。如果是文本文件,用户有时会混淆他们。如果通过混淆行结束它们导致应用程序失败,这将成为支持密集型应用程序。
在那里,做到了,切换到XML。让支持者更快乐。
如果只有我可以选择我必须使用的格式..... *空心笑*。 – GiantCowFilms
同意。以二进制形式打开流,不进行翻译。 '\ n'或std :: endl输出到这样的流只会导致换行。 – Clifford