fstream C++ 路径

fstream C++ Pathing

大家好,我很快编写了一个测试程序来向您展示我遇到的问题。

我正在使用 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

如果您不指定路径,文件将在当前目录中创建,这通常不是我们希望的行为。您必须指定一个完整的路径,以确保文件将保存在您想要的位置。如果你想知道当前可执行文件的路径,你可以使用检查这个其他 SO 问题: 。 获得路径后,您可以在可执行文件附近的路径中选择一个位置来保存数据。或者,如果您愿意,可以使用系统文件夹(取决于操作系统如何知道它们的名称,在 Windows 中选中 this。) 永远不要将当前目录作为路径或路径的一部分,因为用户总是可以选择 运行 您的程序使用不同的当前目录。

使用文件路径中的子目录:

outputFile.Open("SubDirectory/PlayerData");

它在 Visual Studio 2013\Projects\TestFilePathing\TestFilePathing 中结束的原因是您在调试设置中将该目录作为工作目录。 (检查项目的配置)。 如果您更改该目录(或从另一个目录中的命令行启动二进制文件),该文件将最终位于该目录中。

如果您指定一个相对路径,您将得到这种行为。否则你可以指定一个绝对路径,无论你的工作目录是什么,文件都会一直在那里结束。