C++ 如何将文本文件的特定行读入C++;?
我需要将文本文件读入数组。对文本文件进行格式化,使第一行包含数组大小,以下行是数组的元素:C++ 如何将文本文件的特定行读入C++;?,c++,c++11,C++,C++11,我需要将文本文件读入数组。对文本文件进行格式化,使第一行包含数组大小,以下行是数组的元素: 6 5 3 2 1 6 4 其中数组大小等于6。需要以以下格式读取文件: a.exe < testfiles/input a.exe>排列; int数组[arraySize]; 对于(i=1;i>阵列[i]; } 对于(j=0;j在C++数组声明中,数组大小必须是。最简单的更改是使用动态数组: int main(){ using n
6
5
3
2
1
6
4
其中数组大小等于6。需要以以下格式读取文件:
a.exe < testfiles/input
a.exe
以下是我目前掌握的情况:
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
}
}
intmain(){
int-arraySize=0;
cin>>排列;
int数组[arraySize];
对于(i=1;i>阵列[i];
}
对于(j=0;j
数组保持为全零,但大小正确。有人能看出我的错误吗
编辑:我已经修复了要动态分配的数组。现在程序执行没有错误,但是现在整个数组都是文本文件的第二个条目,在这种情况下,5。< P>在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;
}
intmain(){
使用名称空间std;
int-arraySize=0;
cin>>排列;
int*array=newint[arraySize];
for(int i=1;i>阵列[i];
}
对于(int j=0;j > p>在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;
}
intmain(){
使用名称空间std;
int-arraySize=0;
cin>>排列;
int*array=newint[arraySize];
for(int i=1;i>阵列[i];
}
对于(int j=0;j
因为这个问题读起来像是家庭作业,我猜你不允许使用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;
}
#包括
#包括
使用名称空间std;
int main(){
向量nums;
内部阵列化;
cin>>排列;
for(int i=0;i>值;
nums.推回(值);
}
用于(自动编号:nums)
cout因为这个问题读起来像是家庭作业,我猜你不允许使用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;
}
#包括
#包括
使用名称空间std;
int main(){
向量nums;
内部阵列化;
cin>>排列;
for(int i=0;i>值;
nums.推回(值);
}
用于(自动编号:nums)
cout数组的大小必须是编译时已知的常量表达式a.k.a。如果您只知道运行时的大小,请使用vector
。使用std::vector
,因为您直到运行时才知道大小。解决此问题所缺少的知识是堆栈与堆内存分配。您无法进行动态分配-当您声明一个数组,就像您已经完成的那样,这是基于堆栈的分配。您只能使用“代码>新的< /Cord>关键字声明堆上的动态大小数组。参见:这是无效的C++代码。数组大小必须是一个完整的const表达式。使用动态数组或使用STD::vector。<代码> int数组[数组大小]C++是一个编译器扩展,而不是语言特征。使用<代码> STD::vector < /Calp>。数组的大小必须是编译时已知的常数表达式.k.>代码<矢量>代码>如果您只知道运行时的大小。使用<代码> STD::vector < /代码>,因为您直到运行时才知道大小。解决这个问题的一个知识是堆栈与堆内存分配。在堆栈上不能做动态大小的数组。当你声明一个数组,就像你已经完成的那样,那就是基于堆栈的分配。你只能用“C++代码>新的< /Cord>关键字”声明堆上的动态大小数组。e必须是整型常量表达式。请使用动态数组或std::vector。int数组[arraySize]C++是一个编译器扩展,而不是一个语言特征。使用一个<代码> STD::向量<代码>……<代码> i <代码>开始于<代码> 1代码> >代码< 0代码> >为什么不只是代码> STD::向量< /代码>?@ JePiJuHL,使用<代码>向量< /代码>也是一个很好的解决方案。我的答案是:评估OP的代码是如何不正确的。虽然…i
从1
开始不是0
为什么不只是std::vector
?@JesperJuhl,使用vector
也是一个很好的解决方案。我的回答说明了OP的代码是如何不正确的。使用vector而不是数组?对于数组,你需要提前知道大小。对于向量,你不知道。使用向量相对于数组有什么好处?对于数组,你需要提前知道大小。对于向量,你不知道。