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

时间:2016-03-09 19:35:23

标签: c++ arrays integer

我正在创建一个只从文本文件中读取整数的程序。我想创建一个读取整数并将它们存储在数组中的函数,以便稍后我可以使用该数组对它们进行冒泡排序。这是我到目前为止,但我得到的输出是一些随机-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;
}

2 个答案:

答案 0 :(得分:2)

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;
}

答案 1 :(得分:0)

您不会在任何时候将数字存储在数组中:

  window.addEventListener("DOMContentLoaded", function(){
    document.getElementById("btnLeaveMessage").addEventListener("click",    
      function(){
        if (document.querySelector(".hfc-badge-title").innerHTML.indexOf("Leave us a message") > -1) {
           document.getElementById("hfcEmbedContainer").style.display = "none";
        }
      });

  });

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

numbers

代码的最后一部分也会尝试打印超出数组的最后一个条目:

cin >> A[i];

请记住,C ++数组基于0,因此cout << "numbers in array: " << A[numbers] << endl; 是* number + 1 *条目。