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

Open a file in another directory with the C++ fstream class

本文关键字:文件 一个 C++fstream 另一个 使用      更新时间:2023-10-16

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

在控制台

./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 firstdata.dat seconddata.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有什么问题吗?或者我给出论点的方式有什么不同吗?

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

无论如何,使用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函数发现的任何错误。因此,如果您有权限问题或文件路径问题,它将被打印出来。