Maine

纵有疾风起,人生不言弃

C++ 文本打开方式和二进制打开方式的区别

1. UNIX/Linux

在 UNIX/Linux 平台中,用文本方式或二进制方式打开文件没有任何区别。

在 UNIX/Linux 平台中,文本文件以\n(ASCII 码为 0x0a)作为换行符号;而在 Windows 平台中,文本文件以连在一起的\r\n(\r的 ASCII 码是 0x0d)作为换行符号。

2. Windows

在 Windows 平台中,如果以文本方式打开文件,当读取文件时,系统会将文件中所有的\r\n转换成一个字符\n,如果文件中有连续的两个字节是 0x0d0a,则系统会丢弃前面的 0x0d 这个字节,只读入 0x0a。当写入文件时,系统会将\n转换成\r\n写入。

也就是说,如果要写入的内容中有字节为 0x0a,则在写入该字节前,系统会自动先写入一个 0x0d。因此,在windows下,如果用文本方式打开二进制文件进行读写,读写的内容就可能和文件的内容有出入。

因此,用二进制方式打开文件总是最保险的。

点赞
  1. 猫抓草说道:

    :razz: 大兄弟 加友链吗? 我也初建 :lol:

    1. Maine说道:

      我会观察一段时间的。 :smile:

发表评论

电子邮件地址不会被公开。 必填项已用*标注