大家好,所以我很快写了一个测试程序来向你展示我遇到的问题。
我正在使用fstream将数据写入我的游戏文件中,以便加载和保存变量。
#include <iostream>
#include <fstream>
#include <string>
int main()
{
std::ofstream outputFile;
outputFile.open("PlayerData"); // This creates the file
std::string Name;
int Age;
std::cout << "Your Name: ";
std::cin >> Name;
outputFile << Name << std::endl;
std::cout << "Your Age: ";
std::cin >> Age;
outputFile << Age << std::endl;
outputFile.close();
return 0;
}
当我运行程序时,它会在:
中创建“PlayerData”文件Visual Studio 2013 \ Projects \ TestFilePathing \ TestFilePathing
一切正常但我想要将PlayerData文件转储到TestFilePathing目录中,我想将其路径创建到子目录中以用于组织目的。
谢谢:D
答案 0 :(得分:0)
如果未指定路径,则将在当前目录中创建该文件,这通常不是所需的行为。您必须指定一个完整的路径,以确保将fille保存在您想要的位置。如果你想知道当前可执行文件的路径,你可以使用检查这个其他的SO问题: https://stackoverflow.com/a/1528493/566608。 获得路径后,可以在可执行文件附近的路径中选择一个位置来保存数据。或者,如果您愿意,可以使用系统文件夹(取决于操作系统如何知道其名称,在Windows中检查this。) 永远不要将当前目录信任为路径或其中的一部分,因为用户总是可以选择使用不同的当前目录运行程序。
答案 1 :(得分:0)
使用文件路径中的子目录:
outputFile.Open("SubDirectory/PlayerData");
它在Visual Studio 2013\Projects\TestFilePathing\TestFilePathing
中结束的原因是您在调试设置中将该目录作为工作目录。 (检查项目的配置)。
如果您更改该目录(或从另一个目录中的命令行启动二进制文件),该文件最终会在该目录中。
如果指定相对路径,则会出现此行为。否则,您可以指定绝对路径,无论您的工作目录是什么,文件都会一直在那里结束。