说明

  • 在windows下,新建文件,默认文件格式为dos

  • 在Linux下,新建文件,默认文件格式为unix

text

  • 在windows平台下

    • 输出时,\n(0x0d)=>\r\n(0x0d 0x0a)

    • 输入时,\r\n(0x0d 0x0a)=>\n(0x0d)

测试

1
2
3
4
5
6
7
8
int main(int argc, char* argv[])
{

std::ofstream ins("test.txt"); // 默认`text`

ins << "a\n";

return 0;
}
  • linux
1
2
3
4
5
[I] /m/s/T/file od -Ax -t x1 test.txt 
000000 61 0a
000002
[I] /m/s/T/file file test.txt
test.txt: ASCII text
  • windows
1
2
3
4
5
[I] /m/s/T/file od -Ax -t x1 test.txt 
000000 61 0d 0a
000003
[I] /m/s/T/file file test.txt
test.txt: ASCII text, with CRLF line terminators

binary

  • 不对文件内容做任何转换

测试

1
2
3
4
5
6
7
8
int main(int argc, char* argv[])
{

std::ofstream ins("test.txt", std::ios_base::binary);

ins << "a\n";

return 0;
}
  • linux
1
2
3
4
5
[I] /m/s/T/file od -Ax -t x1 test.txt 
000000 61 0a
000002
[I] /m/s/T/file file test.txt
test.txt: ASCII text
  • windows
1
2
3
4
5
[I] /m/s/T/file od -Ax -t x1 test.txt 
000000 61 0a
000003
[I] /m/s/T/file file test.txt
test.txt: ASCII text

留言