gpt4 book ai didi

c++ - 无法在 Windows 应用商店应用程序 8.1 中使用 fstream 创建文件

转载 作者:行者123 更新时间:2023-11-30 04:01:22 25 4
gpt4 key购买 nike

我正在使用 direct3D 11.1 来创建我的游戏,我想将玩家的最后记录存储在一个文件中,所以这是我的代码:(它在 !File.good() 中失败)

fstream File("Score.txt");

if (!File.good())
{
return;
}
if (!File.is_open())
{
return;
}
if (File.bad())
{
return;
}
Writer.Write("Easy", getString(Scene->Score), File);
File.close();

这是我要写入文件的 XMLWriter 类:

   class XmlWriter
{
public:
void Write(string const &replace, string const &replaceBy, fstream &file)
{
fstream tempFile;
tempFile.open("ScoreT.xml", fstream::out | fstream::trunc | ios::app);
if (!tempFile)
{
return;
}
string curLine = "";
while (!file.eof())
{
getline(file, curLine);
if (findWord(replace, curLine))
{
int j = 0;
while (curLine[j] != replace[0])
{
j++;
}
j += replace.size() + 1;
for (int k = 0; k < replaceBy.size(); k++)
{
curLine[j] = replaceBy[k];
j++;
}
if (curLine[j] != ',' && curLine[j] != '<')
{
curLine[j] = ' ';
}
tempFile << curLine << "\n";
}
else
{
string temp = "";
file << temp;
tempFile << curLine << "\n";
}
}
file.close();
tempFile.close();
if (remove("Setting.xml") != 0) perror("Error removing file!");
rename("ScoreT.xml", "Score.xml");
}
private:
bool findWord(string search, string searchLine)
{
bool ret = false;
for (int i = 0, j = 0; i < searchLine.size() && j<search.size(); i++)
{
if (search[j] == searchLine[i])
{
ret = true;
j++;
continue;
}
ret = false;
j = 0;
}
return ret;
}
};

但是我每次运行它时,它都无法创建新文件并失败!它有什么问题?请注意,我在我的 XAML 代码中执行此操作。

最佳答案

商店应用程序只允许对少数文件路径进行写访问。通过在没有完全限定路径的情况下调用 fstream::open,API 使用工作目录,在商店应用程序的情况下,它始终是应用程序包路径(应用程序没有写入的路径访问)。

解决方案是使用应用程序具有写入权限的完全限定路径。要保存播放器数据,最好的办法是使用 ApplicationData::Current->RoamingFolder 文件夹,使用 Path 属性获取完整路径,并附加您的文件名想要字符串。然后将完全限定的文件路径字符串传递给 fstream::open,它应该会成功。

关于c++ - 无法在 Windows 应用商店应用程序 8.1 中使用 fstream 创建文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25815285/

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