gpt4 book ai didi

c++ - 如何复制 ifstream 的状态?

转载 作者:行者123 更新时间:2023-11-28 05:56:39 26 4
gpt4 key购买 nike

我有一个函数,它接受一个 ifstream,ifs,并用它来填充这个: std::vector< std::vector > 矩阵; (这是一项任务,我对如何更好地实现它没有任何发言权)。在开始填充“矩阵”之前,我想知道我正在阅读的文件的长度这样,我将避免不断调整大小。但是,我只有一个 ifstream 对象,ifs。如果我使用循环来查找文件的长度,我将位于文件的末尾并且我不确定如何“刷新”ifstream 以便它再次位于第一行。我正在考虑的另一件事是创建 ifs 的拷贝。这样,我可以循环遍历一个 ifstream,关闭它,然后使用另一个 ifstream 来获取数据。我觉得打开两个 ifstreams 并指向同一个文件会出现问题。

我不知道有什么方法可以实现这两个想法。请假设我无法再访问原始文件名/路径。

有什么想法吗?

最佳答案

不要尝试复制流。
要跳到开头,只需使用 seekg :

ifs.seekg(0);

如果您在查找之前到达了流的末尾,另一个问题是流会在内部记住文件末尾,而 seekg 不会重置它。为此,请使用

ifs.clear();

在寻找之前。

关于c++ - 如何复制 ifstream 的状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34034739/

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