Я работаю над заданием, строю постоянный индекс дерева b + для файла csv.Я прочитал файл CSV и поместил данные, которые я хочу записать, в файл данных в виде структуры.
deque<employeeShort> employees
struct employeeShort {
int Emp_ID;
string firstname;
string lastname;
string SSN;
string username;
string password;
};
Теперь мне нужно записать всю эту таблицу в файл (обратите внимание, чтооколо 10000 записей).Но, насколько я понимаю, я могу записать в файл только через буфер, который является массивом символов.
Мое текущее решение состоит в том, чтобы перебрать всю деку и добавить в вектор символов, который я затем могу преобразовать в символмассив и использование для записи в файл.
vector<char> bufferVec;
while(!employees.empty()) {
readCSV::employeeShort tempEmp = employees.front();
string tempID = to_string(tempEmp.Emp_ID);
copy(tempID.begin(), tempID.end(), back_inserter(bufferVec));
copy(tempEmp.firstname.begin(), tempEmp.firstname.end(), back_inserter(bufferVec));
copy(tempEmp.lastname.begin(), tempEmp.lastname.end(), back_inserter(bufferVec));
copy(tempEmp.SSN.begin(), tempEmp.SSN.end(), back_inserter(bufferVec));
copy(tempEmp.username.begin(), tempEmp.username.end(), back_inserter(bufferVec));
copy(tempEmp.password.begin(), tempEmp.password.end(), back_inserter(bufferVec));
employees.pop_front();
}
char buffer[bufferVec.size()];
copy(bufferVec.begin(), bufferVec.end(), buffer);
pageFile.global_fs.write(buffer, sizeof(buffer));
Я знаю, что это очень хакерский способ сделать это, и я надеялся, что кто-то может предложить что-то более эффективное.Спасибо.