【问题标题】:fstream C++ Pathingfstream C++ 路径
【发布时间】:2015-11-20 14:31:36
【问题描述】:

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

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

【问题讨论】:

    标签: c++ file fstream


    【解决方案1】:

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

    outputFile.Open("SubDirectory/PlayerData");
    

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

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

    【讨论】:

    • 如果我使用“PlayerData”作为 CharacterName 变量来显示玩家之间的个性。 std::string Jacob = "Jacob"; std::ofstream 输出文件; outputFile.open("玩家"/Jacob); // 这会创建文件
    • 在创建文件名之前先构造文件名。
    • 非常感谢,垫子!!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-25
      • 1970-01-01
      相关资源
      最近更新 更多