4

在这个函数中,我试图打开一个包含一组我想分配给我的矩阵数组的字符的文件,但是每当我运行这个程序时,控制台都会显示一个错误,指出文件未打开。另一个问题,如果我将该文件添加到我的资源文件夹中,我如何指定访问该文件而不是我在硬盘驱动器根目录中的文件?

ifstream readSecondMap("C:\\map_2.txt", ifstream::in);

void Stage::populateStage(ifstream &myStage, char (&myArray)[mapXcor][mapYcor]) {
    if(myStage.is_open()){
        for(int a = 0; a < mapXcor+1; ++a){
            for(int b = 0; b < mapYcor+1; ++b){
                myArray[a][b] = (char) myStage.get();
            }
        }
        myStage.close();        
    } else {
        std::cout << "Error: Unable to open File" <<std::endl;
    }
}
4

2 回答 2

2

该问题很可能是以下问题之一:

1) map_2.txt 不存在于您在 ifstream 声明中指定的位置。

2)您没有足够的权限访问C盘的根文件夹。

我建议将文件移动到您的代码临时存储的同一文件夹中,并首先尝试使其与该位置一起工作,以验证问题是否与文件位置或访问权限有关,而不是您在代码中执行的操作。然后将其移动到您的资源文件夹,并使用相对路径名访问它(如果它有效)。如果当文件与代码位于同一文件夹中并且路径名正确写入时它不起作用,那么您可能在代码中做错了,需要发布大部分代码以公开发给我们。

于 2013-04-12T01:51:54.270 回答
1

正如@TianyunLing 所说:

我在 KUbuntu 12.10 上测试过:

  1. 打开错误:如果map_2.txt不存在,则会发生错误。
  2. 文件路径:

    文件夹 1 + -------
    文件 1 +------- 文件
    2文件

    2 +------- 程序
    +-------文件 3

供您program访问文件1,使用"../folder1/file1",访问"file3",使用file3。(假设你不改变你的program工作目录)

还有一件事,您不需要指定ifstream::infor ifstream

于 2013-04-12T01:51:02.390 回答