我試圖寫入追加數據到文件末尾,並使用seekp(streamoff off,ios_base :: seekdir dir)函數,但它不會追加,它以某種方式寫入數據在文件中間。 我試着添加像這樣打開文件 - file.open(resultFile,fstream :: in | fstream :: out); (正如其他類似帖子中所建議的那樣),但我仍然得到相同的輸出。 即代碼:問題使用file.seekp
bool Manager::ValidCommand(Command* com, ofstream &ResultFile) const
{
Employee::DepartmentEn dept = Employee::InvalidDepartment;
if (com == NULL)
return false;
if(com->GetFunction() <Command::PrintCityCouncilList || com->GetFunction() > Command::HireEmployee){
ResultFile.seekp(0,ios::end);
ResultFile << "Command:Failed activating function - invalid function number\n";
return false;}
if ((com->GetFunction() == Command::PrintDepartmentEmployees) || (com->GetFunction() == Command::PrintDepartmentExpenses) || (com->GetFunction() == Command::PrintDepartmentStatistics)){
dept = com->GetDepartment();
if((pcc->FindDepartment(dept) == NULL)|| (dept < Employee::Engineering) ||(dept > Employee::Sanitation))
{
ResultFile.seekp(0,ios::end);
ResultFile << "Command:Failed activating function - invalid department \n";
return false;
}
}
return true;
}
我可能會做錯什麼?
您是否嘗試明確設置二進制模式? failbit/badbit是什麼意思(請參閱http://www.cplusplus.com/reference/iostream/ostream/seekp/)? – AndiDog 2010-09-11 23:49:49
你是否曾經寫過任何地方*但是*有問題的文件的結尾?如果所有的寫入操作都應該結束,那麼簡單的方法可能是用'std :: ios_base :: app'打開。 – 2010-09-11 23:57:03
嘗試設置二進制模式,但沒有改變,並失敗函數返回false,所以我想沒有例外 – 2010-09-12 00:07:32