c++中ifstream和fstream的一个区别
太久没写文章了,今天水一篇
前几天写c++读取一个二进制数据文件出了个小问题,发现读不出来,代码大概是如下这样子的
#include <iostream>
#include <fstream>
using namespace std;
int main(){
fstream fs("data",fstream::binary);
char data[3];
fs.read(data,3);
for(int i=0;i<3;++i){
cout<<(int)data[i]<<" ";
}
cout<<endl;
return 0;
}
后来发现把fstream换成ifstream就可以了
#include <iostream>
#include <fstream>
using namespace std;
int main(){
ifstream fs("data",fstream::binary);
char data[3];
fs.read(data,3);
for(int i=0;i<3;++i){
cout<<(int)data[i]<<" ";
}
cout<<endl;
return 0;
}
或者如果继续用fstream,构造函数中需要显式的传递个in标志位:
#include <iostream>
#include <fstream>
using namespace std;
int main(){
fstream fs("data",fstream::binary|fstream::in);
char data[3];
fs.read(data,3);
for(int i=0;i<3;++i){
cout<<(int)data[i]<<" ";
}
cout<<endl;
return 0;
}
在http://www.cplusplus.com/reference/fstream/ifstream/ifstream/中也有说:
主要是我很少用c++中的stream(除了cout),所以对这方面的api不熟悉。在此记录下来备忘。