gpt4 book ai didi

c++ - std::ifstream::open() 不工作

转载 作者:太空宇宙 更新时间:2023-11-03 10:22:25 25 4
gpt4 key购买 nike

我正在开发一款游戏的原型(prototype),某些游戏规则将在 ini 文件中定义,这样游戏设计师就可以调整游戏参数,除了重新编译之外不需要我的帮助。这就是我目前正在做的事情:

std::ifstream stream;
stream.open("rules.ini");

if (!stream.is_open())
{
throw new std::exception("Rule file could not be opened");
}

// read file contents here

stream.close();

但是,我的流从未成功打开。在调试过程中深入研究 STL 源代码会发现 _getstream()(如 stream.c 中所定义)一直返回 NULL,但我就是不明白这是为什么。有人帮忙吗?

编辑:Rules.ini 与 .exe 文件位于同一目录中。

最佳答案

您假设工作目录 是您的可执行文件所在的目录。这是一个错误的假设。

您的可执行文件可以从任何工作目录运行,因此在您的软件中硬编码相对路径通常不是一个好主意。

如果您希望能够访问与您的可执行文件位置相关的文件,您应该首先确定您的可执行文件的路径并从中创建一个完全限定的路径。

您可以通过检查传递给 main()argv[0] 参数来获取可执行文件的名称。或者,如果您使用的是 Windows,则可以使用 GetModuleFileName() 获取它。通过传递 NULL 作为第一个参数。

关于c++ - std::ifstream::open() 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/357963/

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