使用迭代器从文件中读取二进制整数列表

时间:2013-11-08 03:36:51

标签: c++ file binary iterator

我正在寻找一种方法,使用std::vector从文件中读取二进制整数时,使用迭代器填充std::ifstream容器。

我尝试了以下方法:

std::vector<int> indices;
indices.reserve(index_count);
std::copy(std::istream_iterator<int>(ifstream), std::istream_iterator<int>(), std::back_inserter(indices));

但没有添加任何条目。我已经读过这个方法可能仅适用于字符串吗?

无论如何,任何建议都将不胜感激。 :)

1 个答案:

答案 0 :(得分:2)

您必须编写自己的迭代器才能执行此操作。这样做没有用 - 它会很慢,因为迭代器的每个++你会做另一次读取(这是很多读取,或者至少要比那里多得多)。

如果你有一个纯粹的文件......

std::ifstream is("filename.ints", std::ios::binary|std::ios::in);
is.seekg(0, std::ios::end);
auto length = is.tellg();
is.seekg(0)

std::vector<int> ints(length/sizeof(int), 0);
is.read(reinterpret_cast<char*>(ints.data()), ints.size()*sizeof(int));
相关问题