无法打开输入文件

时间:2015-07-27 20:41:48

标签: c++ oop file-io io

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

这是我的计划:

 #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;
}

1 个答案:

答案 0 :(得分:1)

如果您尝试打开“C:\ SomeDirectory \ infile.txt”这将是一个绝对路径。这与“infile.txt”相反,后者称为相对路径。这引出了一个问题,“它相对于哪里?”。它与“当前工作目录”或CWD有关。通常,CWD设置为可执行文件所在的位置,但不一定是!实际上,如果将文件拖放到可执行文件中,CWD将是您拖动文件的位置。或者,如果从Visual Studio运行并从IDE内部启动代码(通过按下按钮或使用F5),CWD将不在可执行文件的位置。

简短的回答是你通常想要使用绝对路径。绝对存在相对路径有意义的情况,但您必须了解程序的使用方式以及CWD的位置才能使其有用。对于你的情况,我会坚持绝对的道路。