私はバイナリファイルを含むプロジェクトに取り組んでいます。 私はバイナリファイルについて調査を始めましたが、前に書いたバイナリファイルからベクトルを書き込んで書き込む方法についてはまだ混乱していますバイナリファイルを書き込んでベクトルを埋め込む - C++
ここにコードは書いてあります。
void binario(){
ofstream fout("./Binario/Data.AFe", ios::out | ios::binary);
vector<int> enteros;
enteros.push_back(1);
enteros.push_back(2);
enteros.push_back(3);
enteros.push_back(4);
enteros.push_back(5);
//fout.open()
//if (fout.is_open()) {
std::cout << "Entre al if" << '\n';
//while (!fout.eof()) {
std::cout << "Entre al while" << '\n';
std::cout << "Enteros size: "<< enteros.size() << '\n';
int size1 = enteros.size();
for (int i = 0; i < enteros.size(); i++) {
std::cout << "for " << i << '\n';
fout.write((char*)&size1, 4);
fout.write((char*)&enteros[i], size1 * sizeof(enteros));
//cout<< fout.get(entero[i])<<endl;
}
//fout.close();
//}
fout.close();
cout<<"copiado con exito"<<endl;
//}
}
ここで読書のためのコードです:
oid leerBinario(){
vector<int> list2;
ifstream is("./Binario/Data.AFe", ios::binary);
int size2;
is.read((char*)&size2, 4);
list2.resize(size2);
is.read((char*)&list2[0], size2 * sizeof(list2));
std::cout << "Size del vector: " << list2.size() <<endl;
for (int i = 0; i < list2.size(); i++) {
std::cout << i << ". " << list2[i] << '\n';
}
std::cout << "Antes de cerrar" << '\n';
is.close();
}
私は、ファイルに正しく書いている場合、私は知らない私はめちゃくちゃ私のメインのファイルがないので、これは単なるテストです、数値を書く代わりに、私はベクトルに格納されたオブジェクトを保存し、ユーザーがプログラムを実行するたびに読み込む必要があります。
あなたが書き込んだファイルを読み返し、あなたが書き込んだのと同じ値を取得することは、ファイルに正しく書き込んでいるかどうかの良いテストになります。 –
私はなぜ単一文を書くのではなく、単一のベクトル要素ごとに 'enteros.size()'を書くのか分かりません。そして、 'enteros [i]'と書いたときには、 'enteros.size()* sizeof(enteros)'がベクトル全体のバイトの5倍であるので、間違いなく 'sizeof(enteros [i] ) ' –