无法打开输入文件

Cannot open input file

我正在编写一个基本程序,它将从文本文件中读取整数列表并将文件中的最小整数和最大整数输出到屏幕。 我确保文本文件与源代码文件位于同一文件夹中,并且文件名与我在代码中调用的名称相同。无论如何,该程序都无法打开该文件。我该如何解决这个问题?

这是我的程序:

 #include <iostream>
 #include <fstream>
 #include <cstdlib>
 using namespace std;

int main()
{
    ifstream inStream;

    inStream.open("infile.txt");
    if (inStream.fail())
    {
        cout<<"Input file opening failed.\n";
        system("pause");
        exit(1);
    }

    int arr[100], i = 0;

    while(!inStream.eof())
    {
        inStream>>arr[i++];
    }

    int min = arr[0];

    for (int index = 1; index <= i; index++)
    {
        if (arr[index] < min)
        {
            min = arr[index];
        }
    }

    int max = arr[0];

    for (int index = 1; index <= i; index++)
    {
        if (arr[index] > max)
        {
            max = arr[index];
        }
    }

    cout<<"The smallest number is "<<min<<endl;
    cout<<"The largest number is "<<max<<endl;

    inStream.close();

    system("pause");
    return 0;
}

如果您尝试打开 "C:\SomeDirectory\infile.txt" 那将是一个绝对路径。这与称为相对路径的 "infile.txt" 相反。这就引出了一个问题,"where is it relative to?"。它是相对于 "Current Working Directory" 或 CWD 的。通常,CWD 设置为可执行文件所在的位置,但不一定如此!事实上,如果您将文件拖放到可执行文件中,CWD 将是您从中拖放文件的位置。或者,如果您从 Visual Studio 运行 并从 IDE 内部启动代码(通过点击按钮或使用 F5),CWD 将不在可执行文件所在的位置。

简短的回答是您通常希望使用绝对路径。肯定存在相对路径有意义的情况,但您确实必须了解您的程序是如何使用的以及 CWD 在哪里才能使它有用。对于你的情况,我只会坚持绝对路径。