我正在编写一个基本程序,它将从文本文件中读取整数列表,并将最小整数和最大整数输出到屏幕。 我确保文本文件与源代码文件位于同一文件夹中,文件名与我在代码中调用的文件名相同。无论如何,程序都无法打开文件。我该如何解决这个问题?
这是我的计划:
#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;
}
答案 0 :(得分:1)
如果您尝试打开“C:\ SomeDirectory \ infile.txt”这将是一个绝对路径。这与“infile.txt”相反,后者称为相对路径。这引出了一个问题,“它相对于哪里?”。它与“当前工作目录”或CWD有关。通常,CWD设置为可执行文件所在的位置,但不一定是!实际上,如果将文件拖放到可执行文件中,CWD将是您拖动文件的位置。或者,如果从Visual Studio运行并从IDE内部启动代码(通过按下按钮或使用F5),CWD将不在可执行文件的位置。
简短的回答是你通常想要使用绝对路径。绝对存在相对路径有意义的情况,但您必须了解程序的使用方式以及CWD的位置才能使其有用。对于你的情况,我会坚持绝对的道路。