C中的文件流和C++中的iostream有什么区别?

Mai*_*nID 3 c c++ programming-languages stream

C中的File(File*指针)流和C++中的iostream有什么区别?

为什么他们都叫流,他们有共同点吗?

Mat*_*ttJ 9

它们都处理文件,"流"只是一个非常通用的术语,表示来自某些来源的数据.

区别主要在于C++的iostream对象是类/对象,而C文件数据是通过定义的f*()函数访问的.

所以基本上,相同的任务,不同的界面风格.


unw*_*ind 5

它们通常都是缓冲的,这意味着您在流上执行的I/O与基础系统对象(例如文件)上完成的I/O不匹配.

例如fread(),读取2个字节的调用可能会尝试从文件读取1,024个字节,如果您接近文件末尾,则可能只返回57个字节.差异全部由流实现隐藏,它将返回2个字节,并记住它的缓冲区中还有55个字节.因此,它将满足下一个读取请求,而根本不会达到文件级别.

编辑:值得指出的是,两种语言(stderrcerr分别)的默认错误流都没有缓冲.这是一个巨大的胜利,因为它增加了及时输出的机会.通过使用printf()语句喷洒代码来追逐奇怪的崩溃错误时,出于这个特殊原因打印到错误流是一个非常好的主意.