【发布时间】:2011-07-08 17:07:07
【问题描述】:
要将多条数据写入文件,我有两种方法:
-
直接一一写入ofstream
ofstream file("c:\\test.txt"); for (int i = 0; i < 10000; ++i) { file << data[i]; } -
先写入istringstream,再写入ofstream
ostringstream strstream; for (int i = 0; i < 10000; ++i) { strstream << data[i]; } ofstream file("c:\\test.txt"); file << strstream.str();
毫不奇怪,第二种方法更快,事实上,在我的 HP7800 机器上它比第一种方法快 4 倍。
但是为什么呢?我知道 ofstream 在内部使用 filebuf,而 ostringstream 正在使用 stringbuf - 作为缓冲区,它们都应该驻留在内存中,因此应该没有区别。
引擎盖下有什么区别?
【问题讨论】:
标签: c++ filestream iostream