我需要一个项目来保存玩游戏的用户的进度。我有代码创建文件,如果没有,并给它起始值,另一个读取文件,无论是在它之前存在还是新创建。这两个部分都是单独工作,但是当它们在一起时会产生错误。(重新声明ifstream myfile)
#include <fstream>
#include <string.h>
int i = 0;
string line;
ifstream myfile ("progress.txt");
if(!myfile)
{
ofstream myfile;
myfile.open ("progress.txt"); //create new file
myfile << "0\n";
myfile << "1\n";
myfile << "1\n";
}
ifstream myfile;
while(getline(myfile, line))
{
WL.levels[i].lockedLevel = line[0];
i++;
}
myfile.close();
有什么建议让它发挥作用吗?
答案 0 :(得分:1)
是的,实际上您声明两次myfile
会产生编译错误。快速解决方法是创建另一个具有不同名称或更好的关闭流并重新打开它:
myfile.close();
myfile.open("progress.txt");
您必须放置而不是第二行ifstream myfile;
。
但是,您并不需要关闭流并重新打开它,更好的解决方案是使用seekg方法重置下一个字符的位置以读取为零:
myfile.seekg(0);
<强>更新强>
我在开始时没有看到你在if语句中创建了一个同名的ofstream
对象。如果您要同时读取和写入文件,您应该考虑在开始时将myfile定义为fstream
一次,然后在写入后使用seekg
重置位置。