C++の仕様書が読んで調べてからと思ったのですが、JISCの方がエラーで見れなくなってるので質問させていただきました。
コンテナをそのまま書き出す事が出来ませんので(やり方がわからないだけであるのかも?)
要素を書き込むのですが、vector内部で配列がどう扱われている分かりません。
下記の例では成功しましたが、アドレスを取って書き込む場合値は保障されるのでしょうか?
void main(){
vector<int> a(3.0);
a[0]=10;
a[1]=11;
a[2]=12;
fstream fs("a.bin",ios::out|ios::binary|ios::trunc); //ファイルストリーム
fs.write((char*)&a[0],sizeof(a[0])*a.size());
fs.close();
a[0]=0;
a[1]=0;
a[2]=0;
fs.open("a.bin",ios::in|ios::binary);
fs.read((char*)&a[0],sizeof(a[0])*a.size());
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl; //
}
結果
10 11 12
void main(){
vector<int> a(3.0);
a[0]=10;
a[1]=11;
a[2]=12;
fstream fs("a.bin",ios::out|ios::binary|ios::trunc); //ファイルストリーム
vector<int>::iterator it;
for(it=a.begin();it!=a.end();it++)
fs.write((char*)&*it,sizeof(a[0]));
fs.close();
a[0]=0;
a[1]=0;
a[2]=0;
fs.open("a.bin",ios::in|ios::binary);
for(it=a.begin();it!=a.end();it++)
fs.read((char*)&*it,sizeof(a[0]));
cout<<a[0]<<" "<<a[1]<<" "<<a[2]<<endl; //
}
結果
10 11 12