当前位置:  开发笔记 > 编程语言 > 正文

std :: ifstream :: open()不起作用

如何解决《std::ifstream::open()不起作用》经验,为你挑选了1个好方法。

我正在为游戏开发原型,并且某些游戏规则将在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文件位于同一目录中.



1> Drew Dormann..:

您假设工作目录是您的可执行文件所在的目录.这是一个不好的假设.

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

如果您希望能够访问相对于可执行文件位置的文件,则应首先确定可执行文件的路径并从中创建完全限定的路径.

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

推荐阅读
依然-狠幸福
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有