Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 无法打开输入文件_C++_Oop_File Io_Io - Fatal编程技术网

C++ 无法打开输入文件

C++ 无法打开输入文件,c++,oop,file-io,io,C++,Oop,File Io,Io,我正在写一个basic程序,它将从文本文件中读取整数列表,并将文件中的最小整数和最大整数输出到屏幕。 我确保文本文件与源代码文件位于同一文件夹中,并且文件名与代码中的名称相同。无论发生什么情况,程序都无法打开该文件。我怎样才能解决这个问题 这是我的节目: #include <iostream> #include <fstream> #include <cstdlib> using namespace std; int main() { ifs

我正在写一个basic程序,它将从文本文件中读取整数列表,并将文件中的最小整数和最大整数输出到屏幕。 我确保文本文件与源代码文件位于同一文件夹中,并且文件名与代码中的名称相同。无论发生什么情况,程序都无法打开该文件。我怎样才能解决这个问题

这是我的节目:

 #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;
}
#包括
#包括
#包括
使用名称空间std;
int main()
{
流内流;
河道内开放(“infle.txt”);
if(inStream.fail())
{
库塔尔[i++];
}
int min=arr[0];
对于(int index=1;index,如果您试图打开“C:\SomeDirectory\infle.txt”,这将是一个绝对路径。这与称为相对路径的“infle.txt”相反。这就引出了一个问题,“它相对于哪里?”。它相对于“当前工作目录”或CWD。通常,CWD设置为可执行文件所在的位置,但不必设置为!事实上,如果您将文件拖放到可执行文件上,CWD将是您从中拖动文件的位置。或者如果您从Visual Studio运行并从IDE内部启动代码(通过点击按钮或使用F5)CWD将不在可执行文件所在的位置


简而言之,您通常希望使用绝对路径。在某些情况下,相对路径是有意义的,但您确实必须了解您的程序是如何使用的,以及CWD在哪里,才能使其发挥作用。对于您的情况,我只会坚持使用绝对路径。

请注意,您的程序还存在其他问题严重问题:带有
!eof
前置条件的循环。它通常会导致程序“读取”比文件中实际存在的值更多的值(一个)。不要使用
!eof
作为前置条件。在此基础上,循环将迭代到
索引,而不是使用数组,您应该保留两个变量:最小和最大。如果读取的整数较小,则变为最小;如果整数大于最大,则变为最大。无需存储所有值。@thomasatthews我不明白如果不将文件中的所有数字存储在一个数组中以处理它们并输出结果,怎么能做到这一点。你能解释更多吗?将
最小值设置为
最大值
设置为
最小值
。循环:从文件中读取值。
如果(值最大值)最大=值;
。结束循环。
MAX\u INT
MIN\u INT
limits.h
中定义,可以命名为
INT\u MAX
INT\u MIN
@ThomasMatthews What is limits.h?我认为这可能超出了我在课堂上或教科书中所学的范围。有没有更简单的方法来解决这个问题设置最大值和最小值?“简短的回答是您通常希望使用绝对路径。”-不太好的建议!当您在团队中处理具有外部依赖关系的项目时,您不一定知道它们在所有其他团队成员的计算机上的确切位置。与使用绝对路径相比,确定该资源相对于当前工作目录的位置可能更容易。或者,您可以使用环境路径用于定位资源的路径变量(最好是Windows附带的变量)。