is_open()总是返回' false'当我尝试从文件中读取时

时间:2016-03-21 02:28:38

标签: c++ file-io ifstream

我正在尝试让用户输入文本文件的名称并从中读取,但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提示,表明该文件从未打开过。

0 个答案:

没有答案