[英]C++ read integers from file and save into array
我正在制作一个仅从文本文件读取整数的程序。 我想创建一个读取整数并将其存储在数组中的函数,以便稍后可以使用该数组通过冒泡排序对其进行排序。 到目前为止,这是我所拥有的,但是我得到的输出是一些随机的-803234 .... number:
void read(int A[max], int& numbers) {
ifstream file("ints.txt");
if (file.is_open()) {
file >> numbers;
for (int i = 0; i < numbers; i++) {
cout << "numbers: " << A[i] << endl;
}
file.close();
}
cout << "numbers in array: " << A[numbers] << endl;
}
std::vector<int> read_ints(std::istream& is)
{
std::vector<int> result;
std::copy(std::istream_iterator<int>(is),
std::istream_iterator<int>(),
std::back_inserter(result));
return result;
}
如果您不能使用向量,则会遇到问题,因为您现在需要检查文件结尾和数组空间是否耗尽...
此函数将同时检查两者,并返回已放入缓冲区的整数数:
template<size_t N>
size_t read_ints(int (&dest)[N], std::istream& is)
{
size_t i = 0;
while (i < N && is >> dest[i]) {
++i;
}
return i;
}
非模板版本:
#define BUFFER_LEN 100
size_t read_ints(int (&dest)[BUFFER_LEN], std::istream& is)
{
size_t i = 0;
while (i < BUFFER_LEN && is >> dest[i]) {
++i;
}
return i;
}
您不会在任何时候将数字存储在数组中:
void read(int A[max], int& numbers) {
ifstream file("ints.txt");
if (file.is_open()) {
file >> numbers;
for (int i = 0; i < numbers; i++) {
// you're printing A[i] but you haven't stored
// anything there.
cout << "numbers: " << A[i] << endl;
我假设numbers
是文件中条目的数目,并且您打算以与读取numbers
相同的方式读取numbers
但是读取的是A [i]。
cin >> A[i];
您的代码的最后一部分还将尝试在数组的最后一项之外进行打印:
cout << "numbers in array: " << A[numbers] << endl;
请记住,C ++数组基于0,因此A[numbers]
是* numbers + 1 * th项。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.