使用C ++ fstream类在另一个目录中打开一个文件

时间:2014-10-31 01:44:13

标签: c++

当我使用参数运行我的代码时,当它在另一个目录中时,我无法读取该文件,就像这样。

在控制台中

./exit first/data.dat second/data.dat

代码是:

#include <fstream>

int main(int argc, char *argv[]){

  const char *In1 = argv[1];
  const char *In2 = argv[2];

  ifstream fp1;
  ifstream fp2;

  fp1.open(In1);
  fp2.open(In2);

  if(!fp1 || !fp2){
     printf("Error");
  }
  ...

}

此外,当参数是与exececutable在同一目录中的文件完美无缺时,如下所示:

./exit data1.dat data2.dat

我尝试过不同的参数格式,例如:

./exit first\data.dat second\data.dat
./exit first//data.dat second//data.dat
./exit first\\data.dat second\\data.dat
./exit .first/data.dat .second/data.dat
./exit ..first/data.dat ..second/data.dat
./exit ../first/data.dat ../second/data.dat
./exit ..//first//data.dat ..//second//data.dat

fstream出了什么问题,或者我提出的论点或方式不同?

1 个答案:

答案 0 :(得分:0)

对不起,我把它作为答案。但答案的格式比评论更好。

无论如何,使用perror()来告诉你问题可能是什么......这样的事情:

#include <stdio.h>

int main ()
{
  FILE * pFile;
  pFile=fopen ("unexist.ent","rb");
  if (pFile==NULL)
    perror ("The following error occurred");
  else
    fclose (pFile);
  return 0;
}

perror()将打印libc函数发现的任何错误。因此,如果您有权限问题或文件路径问题,它将被打印出来。