从文件中读取整数 - 逐行

时间:2013-04-20 17:12:32

标签: c++

如何在c ++中读取文件中的整数到整数数组?例如,这个文件的内容:

23
31
41
23

会变成:

int *arr = {23, 31, 41, 23};

我实际上有两个问题。首先是我不知道如何逐行阅读它们。对于一个整数,这将非常简单,只需file_handler >> number语法即可。我该如何逐行完成这项工作?

对我来说似乎更难克服的第二个问题是 - 我应该如何为这件事分配内存? :U

4 个答案:

答案 0 :(得分:3)

std::ifstream file_handler(file_name);

// use a std::vector to store your items.  It handles memory allocation automatically.
std::vector<int> arr;
int number;

while (file_handler>>number) {
  arr.push_back(number);

  // ignore anything else on the line
  file_handler.ignore(std::numeric_limits<std::streamsize>::max(), '\n');
}

答案 1 :(得分:2)

不要使用数组使用向量。

#include <vector>
#include <iterator>
#include <fstream>

int main()
{
    std::ifstream      file("FileName");
    std::vector<int>   arr(std::istream_iterator<int>(file), 
                           (std::istream_iterator<int>()));
                       // ^^^ Note extra paren needed here.
}

答案 2 :(得分:1)

这是一种方法:

#include <fstream>
#include <iostream>
#include <iterator>

int main()
{
    std::ifstream file("c:\\temp\\testinput.txt");
    std::vector<int> list;

    std::istream_iterator<int> eos, it(file);

    std::copy(it, eos, std::back_inserter(list));

    std::for_each(std::begin(list), std::end(list), [](int i)
    {
        std::cout << "val: " << i << "\n";
    });
    system("PAUSE");
    return 0;
}

答案 3 :(得分:0)

您可以使用file >> number。它只知道如何处理空格和换行符。

对于可变长度数组,请考虑使用std::vector

此代码将使用文件中的所有数字填充向量。

int number;
vector<int> numbers;
while (file >> number)
    numbers.push_back(number);