C++ 二进制流的特殊之处是什么? STD::FStuts可以考虑将流视为二进制,而不是文本。有什么区别

C++ 二进制流的特殊之处是什么? STD::FStuts可以考虑将流视为二进制,而不是文本。有什么区别,c++,file,text,binary,fstream,C++,File,Text,Binary,Fstream,据我所知,这完全取决于文件在其他程序中的打开方式。如果我将A写入一个二进制流,它将被转换成01000001(65,A的ASCII码)-完全相同的表示形式。在文本编辑器中可以读作字母“A”,在其他程序中可以读作二进制序列01000001 我是否遗漏了什么,或者流是否被视为二进制没有任何区别?在文本流中,换行符可以被转换为\n字符;对于二进制流,这不会发生。原因是不同的操作系统有不同的存储换行的约定;Unix使用\n,Windows使用\r\n,老式Mac使用\r。对于使用文本流的C++程序,这些都

据我所知,这完全取决于文件在其他程序中的打开方式。如果我将
A
写入一个二进制流,它将被转换成
01000001
(65,
A
的ASCII码)-完全相同的表示形式。在文本编辑器中可以读作字母“A”,在其他程序中可以读作二进制序列
01000001


我是否遗漏了什么,或者流是否被视为二进制没有任何区别?

在文本流中,换行符可以被转换为
\n
字符;对于二进制流,这不会发生。原因是不同的操作系统有不同的存储换行的约定;Unix使用
\n
,Windows使用
\r\n
,老式Mac使用
\r
。对于使用文本流的C++程序,这些都出现在<> > \n>代码> .< /p> ,您得到了另一种方法,即文本流是特殊的,特别是因为<代码> \n>代码>转换为<代码> \n>代码>或<代码> \r\n>代码>(或甚至<代码> \r>代码>…)取决于您的系统。

实际的区别是在Microsoft操作系统上处理行尾序列


二进制流返回文件中存储的数据。文本流规范化行结束序列,用“代码> > \n′/COD>替换.< /P> < P>如果将其作为文本打开,则C或C++运行时将根据主机(Windows或Linux)执行换行转换。 在Mac OS/X或更高版本上没有区别,但我认为较旧的Mac可能会在读取时将“\n”改为“\r”,在写入时则相反(仅针对文本流)

在Windows上,对于文本流,某些字符会得到特殊处理。“\n”字符写为“\r\n”,而“\r\n”对读为“\n”。“\0x1A”字符被视为“文件结束”并终止读取

我认为Symbian PalmOS/WebOS的行为与Windows相同

二进制流只写入字节,不会在任何平台上进行任何转换。

可能的重复