如何在C++中从文件中读取整数到整数数组中?比如,以下文件的内容:
1 2 3 4 5
可以被存储在一个整数数组中。
23
31
41
23
would become:
int *arr = {23, 31, 41, 23};
我实际上有两个问题。第一个问题是我不知道该如何逐行读取它们。对于一个整数,这将非常容易,只需使用”file_handler >> number
“语法即可。我该如何逐行实现呢?
第二个问题似乎更难以解决 - 我应该如何为这个东西分配内存?:U
如何在C++中从文件中读取整数到整数数组中?比如,以下文件的内容:
1 2 3 4 5
可以被存储在一个整数数组中。
23
31
41
23
would become:
int *arr = {23, 31, 41, 23};
我实际上有两个问题。第一个问题是我不知道该如何逐行读取它们。对于一个整数,这将非常容易,只需使用”file_handler >> number
“语法即可。我该如何逐行实现呢?
第二个问题似乎更难以解决 - 我应该如何为这个东西分配内存?:U
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');
}
for(int number; file_handler>>number;)
比使用 while 更加简洁,这是我个人的看法。 - EmilioAK不要使用数组,使用向量。
#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.
}
file >> number
来实现。它能够正确处理空格和换行符。std::vector
。int number;
vector<int> numbers;
while (file >> number)
numbers.push_back(number);
Here's one way to do it:
#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;
}
std::copy(list.begin(), list.end(), std::ostream_iterator<int>(std::cout, "\n"));
- Martin York