ifstream是标准C++中的文件输入流,在实际应用中,用它的read方法,是必须缓冲的,效率很低。
在一次测试中,用它将一个800k的文件一次读入字符串中,和MFC中的CFile类的read方法,效率竟然相差七倍,我用的是VC8,WM5.0的平台,用CFile,不到一秒,用ifstream要快七秒。究其原因,还是两者的机制不同所致。
ifstream的read、write方法,都是要缓冲的,所谓的缓冲区其实是一段中介内存(临时存储区),如果用户不设定的话,一般是512字节,读或写时先
要将数据输送到缓冲区,等到缓冲区满或被刷新时,才将数据传输到设备或文件中。要直接读到内存中(即所谓的内核格式化),要用istringstream类。CFile显然是直接读内存不需要缓冲,所以速度快。
如果不考虑效率,可以用标准C++的文件输出流,二者的区别文件越大越明显,所以要根据实际运用的需要来选择。C++的灵活性在于它的概念是在实际中体会的,理论也是在实际应用中深化的。