C++从文件中读取整数并保存到数组中

C++ read integers from file and save into array

本文关键字:保存 数组 读取 文件 C++ 整数      更新时间:2023-10-16

我正在制作一个只从文本文件中读取整数的程序。 我想创建一个函数来读取整数并将它们存储在数组中,以便以后可以使用该数组通过气泡排序对它们进行排序。这就是我到目前为止所拥有的,但我得到的输出是一些随机的 - 803234....数:

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相同的方式读取值,但读取 A[i]。

cin >> A[i];

代码的最后一部分还尝试打印到数组的最后一个条目之外:

cout << "numbers in array: " << A[numbers] << endl;

请记住,C++数组都是从 0 开始的,所以 A[numbers] 是 *数字 + 1*th 条目。