不同的操作系统有不同的换行符格式,跨平台协作时需要考虑版本工具(git)对换行符的处理
回车和换行
回车(Carriage Return)和换行(Line Feed)概念:
回车CR:将光标移动到当前行开头;
换行LF:将光标“垂直”移动到下一行,并不改变光标水平位置。
以上的概念只适用于打字机,现代计算机沿用的时候主要使用的是回到行首和换行+回到行首的功能。看下面的例子:
1、在Windows下应用程序输出\n到文件,会被自动转换成\r\n
// output:
// first line
// second line
printf("first line\nsecond line");
// test.txt output;
// first line\r\nsecond line
std::fstream fout("test.txt", std::ios::out);
if (fout.is_open())
{
fout.write("first line\nsecond line", sizeof("first line\nsecond line"));
fout.close();
}
2、在windows下应用程序输出\r到文件,不会被转换,并且并不会起到“将光标移动到当前行开头”的作用
// output:
// second line
printf("first line\rsecond line");
// test.txt output;
// first line\rsecond line
std::fstream fout("test.txt", std::ios::out);
if (fout.is_open())
{
fout.write("first line\rsecond line", sizeof("first line\rsecond line"));
fout.close();
}
3、在Windows下应用程序输出\r\n到文件,\r\n会被自动转换成\r\r\n
// output:
// first line
// second line
printf("first line\r\nsecond line");
// test.txt outp