gpt4 book ai didi

C++ 我不能使用 fstream 变量保存到文件

转载 作者:行者123 更新时间:2023-11-28 07:15:34 27 4
gpt4 key购买 nike

任何人都可以识别在这里使用 fstream 变量 fFile 的错误吗?因为在函数 Save() 写入磁盘过程(通过函数 WriteTo())总是失败。但是如果我声明新的本地 fstream 变量而不是 fFile,保存就可以了。(请看下面部分代码)

谢谢


class CardCollection{
public:
CardCollection();
int Open(const char filename[]);
void Close();
void Close();
int NumCards()const;
void ReportStatus()const;
void AddCards();
void DeleteCard(int cardnum);
void ShowCard(int cardnum)const;
void ChangeCard(int cardnum);
void DoFind();
void DoFindAgain();
void DoView();
private:
int GetField(int anyallowed);
void Load();
int fNumCards;
char *fFileName;
std::fstream fFile;
DynamicArray fStore;
char *fFindString;
int fFindPos;
int fSearchField;
};



int CardCollection::Open(const char filename[])
{
//Keep copy of filename
fFileName = new char[strlen(filename)+1];
strcpy(fFileName, filename);

fFile.open(fFileName, std::ios::out | std::ios::in);
if(!fFile.good())
return -1;
Load();
return 0;
}

void CardCollection::Save()
{
for(int i = fNumCards ; i > 0; i--){
RefCard *r = (RefCard*) fStore.Nth(i);
r->WriteTo(fFile); // If I declare a new fstream here
// instead of using fFile, save is ok
}
if(fFile.good()){
std::cout << "Saving completed";
}
else{
std::cout << "Saving error";
}
}

最佳答案

我敢打赌,您在加载数据后不会重置 fstream

将此添加到保存的开头

fFile.clear();
fFile.seekp(0);

关于C++ 我不能使用 fstream 变量保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20283847/

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