fstream如何运作?记忆或文件?

时间:2013-06-10 17:02:02

标签: c++ visual-studio-2005 iostream

我没有找到确定是否值得使用的fstream对象的一个​​方面的明确答案。 fstream是否将其内容存储在内存中,还是更像是指向文件中某个位置的指针?我最初使用CFile并将文本读入CString,但如果可以避免,我宁愿不将整个文件放在内存中。

1 个答案:

答案 0 :(得分:5)

fstreamfile stream的缩写 - 它通常是与主机操作系统文件系统中的文件的连接。 (§27.9.1.1/ 1:“类basic_filebuf<charT,traits>将输入序列和输出序列与文件相关联。”)

它(通常)缓冲来自该文件的一些信息,如果您正在使用一个小文件,它可能都恰好适合缓冲区。然而,在典型情况下,大多数数据将存储在磁盘上的文件中(或至少在OS的文件缓存中),其中fstream的缓冲区中有一小部分(通常为几千字节)。

如果您 希望在内存中使用缓冲区并使其像文件一样,您通常会使用std::stringstream(或类似std::istringstream的变体或std::ostringstream)。