在C ++中用std :: ifstream打开文件的错误(半工作)

时间:2015-04-02 08:08:23

标签: c++ xcode

抱歉打扰你!现在我有一个" bug"在我的游戏中,如果有人能指出我做错了什么,那将非常有帮助。发生的事情是当我通过Xcode运行我的代码时,TileMap加载文件很好。

然而,当我获得生成的可执行文件时,将其复制并粘贴到不同的位置,然后将所有需要的数据文件粘贴到文件夹(.png文件,.txt文件)中,游戏工作正常,但事实是tilemap不会加载。

我不确定这个错误是由于文件位置在IDE和IDE中运行时是否会发生变化。

图片:(抱歉,我没有足够的声誉,所以这里的链接)

游戏工作从Xcode运行:enter image description here 游戏不是从Xcode运行的:enter image description here

这是TileMap.cpp中代码的一部分,它处理将文本文件中的数据加载到数组中(只是为了向您展示它的工作原理):

int t_map[20][15] {};

TileMap::TileMap(std::string fileName, std::string picFile)
{
    std::ifstream inFS;
    inFS.open(fileName.c_str());
    if(!(inFS.is_open()))
    {
        std::cout << "Could not open file.\n";
        return;
    }

    //controlls row
    int tt = 0;

    while(!inFS.eof())
    {
        char buff[100];

        //move to buffer thing
        inFS.getline(buff, 100);

        const char * token[20] = {};
        int j = 0;

        token[0] = strtok(buff, ",");

        if(token[0])
        {
            for(j=1;j<COLMAX;j++)
            {
                token[j] = strtok(0, ",");
                if(!token[j])
                    break;
            }
        }

        for(int i=0;i<COLMAX;i++)
        {
            t_map[i][tt] = atoi(token[i]);
        }
        tt++;
    }

    inFS.close();
    //ends the loading the file and starts the image stuff
    TextureManager::Instance()->load(picFile, "tileMap", Game::Instance()->getRenderer());
}

我通过的文本文件的内容:

2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,3,3,3
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2

非常感谢您的阅读和帮助。

1 个答案:

答案 0 :(得分:0)

我找到了自己问题的答案。我需要获取基本路径,然后让系统从那里搜索文件。