ifstream没有打开文件

时间:2013-04-12 01:28:19

标签: c++ ifstream

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

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;
    }
}

2 个答案:

答案 0 :(得分:1)

正如@TianyunLing所说:

我在KUbuntu 12.10上测试过:

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

      

    的folder1
       + ------- file1
       + ------- file2
      文件夹2
       + -------程序
       + ------- file3

  3.      要让program访问file1,请使用"../folder1/file1"访问"file3",然后使用file3。 (假设您没有更改program工作目录)

    还有一点,您无需为ifstream::in指定ifstream

答案 1 :(得分:1)

问题很可能是以下之一:

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

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

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