gpt4 book ai didi

c++ - 使用 file.seekp 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 14:26:22 26 4
gpt4 key购买 nike

我正在尝试写入以将数据追加到文件末尾,并且正在使用 seekp(streamoff off, ios_base::seekdir dir) 函数但它不追加,不知何故它在中间写入数据的文件。我尝试像这样添加打开文件 - file.open(resultFile,fstream::in|fstream::out);(正如其他类似帖子中所建议的那样)尽管我仍然得到相同的输出。那是代码:

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;
}

我可能做错了什么?

最佳答案

什么是变量 pcc在那里按照您的代码中的引用进行操作?

if((pcc->FindDepartment(dept) == NULL ) .....))  
{ .... }

<罢工>

根据这个关于 C++ 文件输入/输出的文档 here并引用

os::app All output operations are performed at the end of the file, appending the content to the current content of the file. This flag can only be used in streams open for output-only operations.

这意味着,如果同时指定了输入/输出模式,追加将不起作用......你能确认这一点吗?如果是这样的话,忘记以文本模式打开并改用二进制模式可能是值得的....

另一件事 - 文件是否确实打开供您搜索,ResultFile.seekp(...) ?通过闪现类似这样的调试消息来检查流的值:

if (ResultFile.bad()) cout << "Bad stream!\n";

关于c++ - 使用 file.seekp 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3693128/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com