参考:
https://blog.csdn.net/Machey__/article/details/78535956
注意:此方式只能读取文本类的文件,我试过读取winrar,.exe文件都不行。我也没搞懂二进制读为啥不行,我只会C#。
ifstream读取整个文件到内存,存储在char中。
#include <iostream>
#include <fstream>
using namespace std;
int main () {
filebuf *pbuf;
ifstream filestr;
long size;
char * buffer;
// 要读入整个文件,必须采用二进制打开
filestr.open ("test.txt", ios::binary);
// 获取filestr对应buffer对象的指针
pbuf=filestr.rdbuf();
// 调用buffer对象方法获取文件大小
size=pbuf->pubseekoff (0,ios::end,ios::in);
pbuf->pubseekpos (0,ios::in);
// 分配内存空间 +1是关键,不然又些文件会乱码
buffer=new char[size+1];
// 获取文件内容
pbuf->sgetn (buffer,size);
buffer[size]='\0';\\0这是关键
filestr.close();
// 输出到标准输出
cout.write (buffer,size);
delete []buffer;
return 0;
}