从文件中读取数字并将它们存储在数组 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];
}
我的程序的目标是最终将一个充满数字(由用户选择)的文件读入一个数组并输出最小值和最大值。但是,我无法让我的代码在文件中输出正确数量的输入,我想将其用作数组的大小。
我现在的密码是
#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];
}