- 论坛徽章:
- 0
|
如下方式,把Class的所有对象以"块"方式写入3.txt
但是我不能以"块"方式读出.且有异常.
我以二进制创建文件.
写如程序
/***********************************************************************/
#include <iostream>;
#include <fstream>;
#include <cstring>;
#include <cassert>;
using namespace std;
class Class{
string i_name;
public:
Class(const string& str)
:i_name(str){}
Class(){}
const string get()const{return i_name;}
friend ostream& operator<<(ostream& os,const Class& right){
os<<right.get().c_str();
return os;
}
};
//////////////////////////////////////////////////////////////////////////////////////////////
void main(){
Class o[]={"China","USA","RUSSIA"};
Class p[3];
fstream file("3.txt",ios::binary|ios::in|ios: ut);
for(int j=0; j<sizeof(o)/sizeof(*o); j++){
file.seekp(j*sizeof(Class),ios::beg);
file.write((char*)&o[j],sizeof(Class) );
}
file.flush();
}
读出程序
/**********************************************************************/
#include <iostream>;
#include <fstream>;
#include <cstring>;
#include <cassert>;
using namespace std;
class Class{
string i_name;
public:
Class(const string& str)
:i_name(str){}
Class(){}
const string get()const{return i_name;}
friend ostream& operator<<(ostream& os,const Class& right){
os<<right.get().c_str();
return os;
}
};
//////////////////////////////////////////////////////////////////////////////////////////////
void main(){
Class p[3];
fstream file("3.txt",ios::binary|ios::in|ios: ut);
for(int i=0; i<3; i++){
file.seekg(i*(sizeof(Class)),ios::beg);
file.read((char*)&p,sizeof(Class));
}
for(i=0; i<3; i++)
cout<<p<<endl;
} |
|