上一类项目工作到文件,所以必须使用的fstream(用于输入/输出)的unique_ptr,并创建新的文件中写入固定长度的员工记录到(使用员工的EmployeeRec结构) 。问题编写与fstream的
的数据时,我实际上并不被写入以下......至少我没有表现流中它在Visual Studio中寻找和文件从来没有真正建立,我可以找到在任何时候数据该程序的目录。编译好,但我必须错过一些东西。有任何想法吗?
适用代码:
在Employee.h:
class Employee{
int id;
std::string name;
double salary;
struct EmployeeRec{ // Employee file for transfers
int id;
char name[31];
double salary;
};
void write(std::ostream&) const;
};
在Employee.cpp:
// Write an Employee record to file
void Employee::write(ostream& os) const{
EmployeeRec outbuf;
outbuf.id = id;
strncpy(outbuf.name, name.c_str(), 30)[30] = '\0';
outbuf.salary = salary;
os.write(reinterpret_cast<const char*>(&outbuf), sizeof outbuf);
}
在我的主要驱动力:
// "employee.bin" does not exist prior
// EmpVect is a vector of unique_ptr<Employee> that has a few Employees already stored
fstream emprecs("employee.bin", ios::in | ios::out | ios::binary);
for (size_t i = 0; i < EmpVect.size(); ++i){
(EmpVect[i])->write(emprecs);
}
你说得对。该文件实际上并未因某种原因而被打开。我不知道为什么,但是当在fstream上显式调用.open()时,它确实解决了这个问题。谢谢! – CGutz