gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 04:12:22 25 4
gpt4 key购买 nike

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

我尝试了以下方法:

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

但没有添加条目。我听说此方法可能仅适用于字符串?

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

最佳答案

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

如果你有一个纯整数的文件...

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

关于c++ - 使用迭代器从文件中读取二进制整数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19851163/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com