我有一个名为example.txt的文件,其中7个整数格式化,
1
2
3
4
5
6
7
我的代码是,
#include<iostream>
#include<fstream>
using namespace std;
int main() {
int arr[7];
ifstream File;
File.open("example.txt");
int n = 0;
while (File >> arr[n]) {
n++;
}
File.close();
for (int i = 0; i < 7; i++) {
cout << arr[i] << endl;
}
return 0;
}
此代码有效,因为我已经知道文本文件中有多少个整数。如果我不知道文件中有多少整数,我应该在代码中更改以确保它有效?换句话说,如果有人要更改文本文件中的整数数量,我该如何确保我的代码有效?
答案 0 :(得分:1)
使用std::vector
代替固定大小的数组。
使用现有代码,您可以使用push_back
在向量的末尾添加项目。
或者您可以使用std::copy
,std::istream_iterator
和std::back_inserter
来解决所有问题。我不建议,真的,但它看起来令人印象深刻。这样做很有趣。
答案 1 :(得分:1)
你在那里几乎符合C ++。
所以我花时间更改代码的几行,用vector
替换C风格的数组。这是唯一让它真正无C的东西:)。我改变了东西时看到****
评论。
每次都使用vector
,特别是当您不知道列表的大小时(即使您知道大小,因为您可以reserve
或resize
或创建向量开始时适当的维度。
#include<iostream>
#include<fstream>
#include<vector> // ****
using namespace std;
int main() {
vector<int> arr; // ****
ifstream File;
File.open("example.txt");
int n; // ****
while (File >> n) { // ****
arr.push_back(n); // ****
}
File.close();
for (auto n : arr) { // ****
cout << n << endl; // ****
}
return 0;
}
使用-std=c++11
标志进行编译。