4

如何从文件中读取整数到 c++ 中的整数数组?因此,例如,此文件的内容:

23
31
41
23

会成为:

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

?

我实际上有两个问题。首先是我真的不知道如何逐行阅读它们。对于一个整数来说,这很容易,只file_handler >> number需要语法就可以了。我该如何逐行执行此操作?

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

4

4 回答 4

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');
}
于 2013-04-20T17:15:52.440 回答
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.
}
于 2013-04-20T17:33:55.587 回答
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;
}
于 2013-04-20T17:24:31.480 回答
0

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

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

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

int number;
vector<int> numbers;
while (file >> number)
    numbers.push_back(number);
于 2013-04-20T17:17:48.857 回答