只需创建一个大缓冲区并用一次读取填充它。必要时重复。
流(stdio)实现了这一点。您可以使用fopen
然后使用setbuffer
编辑
这很简单
/* 5MB - Can increase or decrease this to your hearts content */
#define BUFFER_SIZE 5242880
char buffer[BUFFER_SIZE];
file = fopen("filename", "r");
setbuffer(file, buffer, BUFFER_SIZE);
然后使用任何操作来读取fscanf
等fgets
。
编辑
抱歉没有注意到它是 C++
这是C++的代码
#include <iostream>
#include <fstream>
using namespace std;
...
const int BUFFER_SIZE = 5242880;
filebuf fb;
char buffer[BUFFER_SIZE];
fb.setbuf(buffer, BUFFER_SIZE);
fb.open ("test.txt",ios::in);
istream is(&fb);
然后可以使用int i; is >> i
ETC
现在快乐蒂诺·迪德里克森