我正在尝试让用户输入文本文件的名称并从中读取,但is_open()
会一直返回false
。我正在我学校的UNIX服务器上进行编译,因此示例输入为./a.out -f 4p.txt
,其中4p.txt
是要读取的文本文件的名称。我的代码应该从test_files
目录中读取此文件。我这样做是因为我有40多种不同的测试文件。以下是我的代码。
int main(int argc, char ** argv){
string file = "4p.txt";
int c;
while ((c = getopt(argc, argv, "f:")) != -1) //example input: ./a.out -f 3p.txt
switch (c)
{
case 'f':
file=optarg;
break;
case '?':
if (optopt == 'c')
fprintf (stderr, "Option -%c requires an argument.\n", optopt);
else if (isprint (optopt))
{
fprintf (stderr, "Unknown option `-%c'.\n", optopt);
}
else
{
fprintf (stderr,"Unknown option character `\\x%x'.\n",optopt);
}
return 1;
default:
abort ();
}
cout << "command line file input option example -f 1p.txt\ndefault is 4p\n";
string fileopen="test_files/"+file;
ifstream in(fileopen);
if (!in.is_open())
cout << "file failed to open\n";
}
我打算从中读取的文件位于标题为test_files
的文件夹中,该文件夹与我的.h
和.cpp
文件位于同一目录中。出于某种原因,我不断从我的代码中获得file failed to open
提示,表明该文件从未打开过。