如何将文本文件的特定行读取到 int 类型的数组中C++?

How can I read specific lines of a text file into an array of type int in C++?

本文关键字:类型 int 数组 C++ 读取 文本 文件      更新时间:2023-10-16

我需要将文本文件读入数组。文本文件的格式设置为第一行包含数组大小,以下行是数组的元素:

6
5
3
2
1
6
4

其中数组大小等于 6。需要以以下格式读取文件:

a.exe < testfiles/input

这是我到目前为止所拥有的:

int main(){
int arraySize = 0;
cin >> arraySize;
int array[arraySize];
for(i = 1; i < arraySize; i++){
cin >> array[i];
}
for(j = 0; j < arraySize-1; j++){
//insertion sort here
}
}

数组保持全部为零,但大小正确。任何人都可以看到我的错误吗?

编辑:我已经修复了要动态分配的数组。程序现在可以执行而没有错误,但现在整个数组都充满了文本文件的第二个条目,在本例中为 5。

由于这个问题读起来像家庭作业,我猜你不允许使用std。但是,如果您有机会,这里有一种更安全的方式来完成您正在尝试的事情:

#include <iostream>
#include <vector>
using namespace std;
int main(){
vector<int> nums;
int arraySize;
cin >> arraySize;
for(int i = 0; i < arraySize; i++){
int value;
cin >> value;
nums.push_back(value);
}
for (auto num : nums)
cout << num << " ";
return 0;
}

在 C++ 数组声明中,数组大小必须是整数常量表达式。最简单的更改是使用动态数组:

int main(){
using namespace std;
int arraySize = 0;
cin >> arraySize;
int * array = new int[arraySize];
for(int i = 1; i < arraySize; i++){
cin >> array[i];
}
for(int j = 0; j < arraySize-1; j++){
//insertion sort here
}
delete [] array;
}