#include <iostream>
#include <fstream>
#include <string>
using namespace std;
int main(){
ifstream fileIn;
char* buff;
long size;
fileIn.open("testIO.cpp",ios::binary|ios::in|ios::ate|ios::_Nocreate);
if(!fileIn){
cout << "open file err" << endl;
system("pause");
return -1;
}
size = fileIn.tellg();
buff = new char[size];
fileIn.seekg(0,ios::beg);
fileIn.read(buff,size);
cout << buff << endl;
fileIn.close();
system("pause");
}
这段代码输出的buff末尾总会有几个乱码
原因是读取的时候size并无讲结尾符读进来
所以认为到了size后面的地方任然是字符串
解决方式就是手动添加结尾
...
buff = new char[size + 1];
fileIn.seekg(0,ios::beg);
fileIn.read(buff,size);
buff[size] = '\0';
...