繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM