#include "binaryIO.h" #include using namespace std; void read_binMatrix(const string& file, vector &cnt, vector &col, vector &ele) { ifstream ifs(file, ios_base::in | ios_base::binary); if(!(ifs.is_open() && ifs.good())) { cerr << "ReadBinMatrix: Error cannot open file " << file << endl; assert(ifs.is_open()); } cout << "ReadBinMatrix: Opened file " << file << endl; int _size; ifs.read(reinterpret_cast(&_size), sizeof(int)); // old: ifs.read((char*)&_size, sizeof(int)); cnt.resize(_size); cout << "ReadBinMatrix: cnt size: " << _size << endl; ifs.read(reinterpret_cast(&_size), sizeof(int)); col.resize(_size); cout << "ReadBinMatrix: col size: " << _size << endl; ifs.read(reinterpret_cast(&_size), sizeof(int)); ele.resize(_size); cout << "ReadBinMatrix: ele size: " << _size << endl; ifs.read(reinterpret_cast(cnt.data()), cnt.size() * sizeof(int)); ifs.read(reinterpret_cast(col.data()), col.size() * sizeof(int)); ifs.read(reinterpret_cast(ele.data()), ele.size() * sizeof(double)); ifs.close(); cout << "ReadBinMatrix: Finished reading matrix.." << endl; } void write_binMatrix(const string& file, const vector &cnt, const vector &col, const vector &ele) { ofstream ofs(file, ios_base::out | ios_base::binary); if(!(ofs.is_open() && ofs.good())) { cerr << "WriteBinMatrix: Error cannot open file " << file << endl; assert(ofs.is_open()); } cout << "WriteBinMatrix: Opened file " << file << endl; int _size = static_cast( cnt.size() ); cout << "WriteBinMatrix: cnt size: " << _size << endl; ofs.write(reinterpret_cast(&_size), sizeof(int)); _size = static_cast( col.size() ); cout << "WriteBinMatrix: col size: " << _size << endl; ofs.write(reinterpret_cast(&_size), sizeof(int)); _size = static_cast( ele.size() ); cout << "WriteBinMatrix: ele size: " << _size << endl; ofs.write(reinterpret_cast(&_size), sizeof(int)); ofs.write(reinterpret_cast(cnt.data()), cnt.size() * sizeof(int)); ofs.write(reinterpret_cast(col.data()), col.size() * sizeof(int)); ofs.write(reinterpret_cast(ele.data()), ele.size() * sizeof(double)); ofs.close(); cout << "WriteBinMatrix: Finished writing matrix.." << endl; } void read_binVector(const string& file, vector &vec) { ifstream ifs(file, ios_base::in | ios_base::binary); if(!(ifs.is_open() && ifs.good())) { cerr << "ReadBinVector: Error cannot open file " << file << endl; assert(ifs.is_open()); } cout << "ReadBinVector: Opened file " << file << endl; int _size; ifs.read(reinterpret_cast(&_size), sizeof(int)); vec.resize(_size); cout << "ReadBinVector: cnt size: " << _size << endl; ifs.read(reinterpret_cast(vec.data()), _size * sizeof(double)); ifs.close(); cout << "ReadBinMatrix: Finished reading matrix.." << endl; } void write_binVector(const string& file, const vector &vec) { ofstream ofs(file, ios_base::out | ios_base::binary); if(!(ofs.is_open() && ofs.good())) { cerr << "WriteBinVector: Error cannot open file " << file << endl; assert(ofs.is_open()); } cout << "WriteBinVector: Opened file " << file << endl; int _size = static_cast( vec.size() ); cout << "WriteBinVector: size: " << _size << endl; ofs.write(reinterpret_cast(&_size), sizeof(int)); ofs.write(reinterpret_cast(vec.data()), vec.size() * sizeof(double)); ofs.close(); cout << "WriteBinVector: Finished writing matrix.." << endl; }