【发布时间】:2022-01-23 09:05:47
【问题描述】:
我正在尝试将文本文件中的数字读取到程序中,但由于某种原因,程序没有读取文件。这是我的代码:
#include <iostream>
#include <stream>
using namespace std;
int main()
{
ifstream infile;
infile.open ("adventDay1.txt");
if (!infile) { //Check if file is opening
cerr << "Error!"<< endl;
return 0;
}
int dataSize = 0;
infile >> dataSize;
int* arr;
arr = new int[dataSize]; //dynamically allocated array
int measureCount = 0; //Keep track of input from file
for (int i = 0; i < dataSize; i++) {
// infile >> dataSize;
arr[i] = dataSize;
measureCount += 1;
}
cout << measureCount << endl;
delete[] arr; //Delete dynamically allocated memory
return 0;
}
每次我运行它时,它只会显示“错误!”我添加的消息。文本文件中有 2,000 个数字,因此根据我在这里的内容,这应该是预期的输出。我无法确定错误。
【问题讨论】:
-
程序工作目录可以与源文件所在的目录不同。第一步,从完整的文件路径开始。
-
作为故障排除帮助,您可以使用
std::filesystem::current_path来查找您的程序正在“寻找”文件的位置。需要 C++17(你应该使用它)。 -
@S.M.好的,完整路径解决了问题。无论出于何种原因,它现在只显示文件中的第一个数字,但我想我可以从这里调试。谢谢!
-
如果由于某种原因你没有编译到 c++17,POSIX
getcwd函数可能很有用,因为它可以打开一个具有独特名称的文件,写入它,关闭它并然后在计算机中搜索文件。 -
我建议创建一个文件,一个可识别的文件名,写“Hello\n”给它。运行您的程序并在目录中搜索此文件。此文件的位置是所有文件的默认位置。将您的数据文本文件移动到此位置。 或者在文件名中指定绝对路径。
标签: c++ text-files fstream