gpt4 book ai didi

c++ - 如何在 C++ 中对 ifstream 使用迭代器两次?

转载 作者:行者123 更新时间:2023-11-30 02:48:00 26 4
gpt4 key购买 nike

我是 C++ 的新手,我对将迭代器与 ifstream 一起使用感到困惑。在以下代码中,我有一个名为 dataFile 的 ifstream 变量。

在代码中,我首先遍历文件一次以计算它有多少个字符(有没有更有效的方法来做到这一点?)。然后我创建一个该大小的矩阵,并再次迭代以填充该矩阵。

问题是迭代器拒绝第二次迭代,并且不会做任何事情。我尝试使用 dataFile.clear() 从一开始就重置 ifstream,但这没有用,可能是因为我对迭代器有一些深刻的误解。有人可以帮帮我吗?

typedef istreambuf_iterator<char> dataIterator;
for (dataIterator counter(dataFile), end; counter != end; ++counter, ++numCodons) {} // Finds file size in characters.
MatrixXd YMatrix = MatrixXd::Constant(3, numCodons, 0);
dataFile.clear(); // Resets the ifstream to be used again.
for (dataIterator counter(dataFile), end; counter != end; ++counter) {...}

最佳答案

istreambuf_iterator 是一个输入迭代器,一旦递增,其先前值的所有拷贝都可能失效,而不是在多 channel 算法中使用时保证有效性的前向迭代器。有关迭代器类别的更多信息,请参阅 here .

关于c++ - 如何在 C++ 中对 ifstream 使用迭代器两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22290769/

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