从文件中读取数字并将它们存储在数组 C++ 中的问题

Problem reading numbers from a file and storing them in an array c++

我的程序的目标是最终将一个充满数字(由用户选择)的文件读入一个数组并输出最小值和最大值。但是,我无法让我的代码在文件中输出正确数量的输入,我想将其用作数组的大小。

我现在的密码是

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>

using namespace std;

int main(){
    string fileName;
    int count(0);
    cout << "Enter input file name: ";
    cin >> fileName;
    ifstream in_file;
    in_file.open(fileName);
    if(in_file.is_open()){
        in_file >> count;
        }
    cout << "The number of entries is " << count;
    int arrayNumbers[count];    
    for (int i = 0; i < count; ++i){
        in_file >> arrayNumbers[i];
        cout << arrayNumbers[i] << endl;
    }
    in_file.close();
}

我在与我的 .cpp 文件相同的目录中有一个名为 tester.txt 的文本文件,但它只有 9 个条目(1-9 在不同的行上)但是当我计算计数时,它说数是 12。 我在像我这样的其他问题中看到

in_file >> count;

计算文件中有多少个数字,但我不明白这是做什么的,因为这是我第一次从文件中读取。 我试图读取的文件中包含以下内容

1
2
3
4
5
6
7
8
9

我还没有开始问题的第二部分,找到最小值和最大值,但是我只是要对数组进行排序,然后显示 arrayNumber[0] 和 arrayNumber[count-1] 以显示最小值和最大,但首先我需要知道根据输入文件制作数组的大小。

but I don't understand what this does

它将您的 ifstream 的第一个数字读入 count

对于您必须按预期工作的代码,您需要将数字的总数附加到输入文件的开头,以便您的文件看起来像这样。

9
1
2
3
4
5
6
7
8
9

感谢所有建议,我设法让它按预期工作。我会 post 我的代码如下。

#include <iostream>
#include <fstream>
#include <cstdlib>
#include <string>
#include <algorithm>
#include <iterator>

using namespace std;

string fileName;
int num, counter = 0;

int main(){
    cout << "Enter input file name: ";
    cin >> fileName;
    ifstream in_file;
    in_file.open(fileName);

    while(in_file >> num){
        counter = counter+1;
    }
    in_file.clear();                    //clear the eof flag after reaching end of file
    in_file.seekg (0, ios::beg);        //go back to the start of the file to read
    int arrayNumbers[counter];          
    for (int i = 0; i < counter; ++i){
        in_file >> arrayNumbers[i];
    }
    in_file.close();
    sort(arrayNumbers, arrayNumbers+counter);
    cout << "Min: " << arrayNumbers[0] << endl 
         << "Max: " << arrayNumbers[counter-1];
}