如何复制ifstream的状态
How can I copy the state of an ifstream?
我有一个函数,它接受一个ifstream,ifs,并使用它来填充:std::vector<std::vector>矩阵;(这是一项任务,我对如何更好地实施这项任务没有任何发言权)。在我开始填写"矩阵"之前,我想知道我正在阅读的文件的长度这样,我将避免不断调整大小。然而,我只有一个ifstream对象,ifs。如果我使用循环来查找文件的长度,我将位于文件的末尾,并且我不确定如何"刷新"ifstream,使其再次位于第一行。我正在考虑的另一件事是创建一个if的副本。通过这种方式,我可以循环通过一个ifstream,关闭它,然后使用另一个来获取数据。我觉得打开两个ifstream并指向同一个文件会有问题。
我不知道如何实现这两个想法。请假设我无法再访问原始文件名/路径。
有什么想法吗?
不要试图复制流
要跳到开头,只需使用seekg:
ifs.seekg(0);
如果在搜索之前到达了流的末尾,另一个问题是流会在内部记住文件末尾,而seekg不会重置这一点。为此,请使用
ifs.clear();
在寻找之前。
相关文章:
- ifstream什么都没读
- Constexpr替代了新的放置方式,可以让内存中的对象保持未初始化状态
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- OSX MetalKit CVMetalTextureCacheCreateTextureFromImage失败,状态:
- std::future_error:无关联状态
- ifstream文件在从行中读取时被清除
- 如何避免LED在循环状态变化中闪烁?
- boost 是否有按特殊类型值编码状态"compact optional"?
- std::ifstream::read 不会读取所有 512 字节,并设置 EOF 和失败位
- 为什么系统函数总是在C++中返回已转移的退出状态?
- C++ 中的编译错误:未定义对"主"的引用 collect2:错误:ld 返回 1 个退出状态
- 将 ifstream 拆分为 n 个流?
- 当可输入框在窗口中处于活动状态时获得通知的任何方法
- 如何将 std::ifstream 转换为 std::basic_istream<CharT, Traits>&?
- 我在 ifstream input_file(文件名)行中收到错误"no matching function to call";
- 检查两个节点在子节点上是否具有相同状态的更优雅的方法
- 严重性代码说明项目文件行抑制状态错误 C2676 二进制">>":"std::ifstream"
- 如何复制ifstream的状态
- “eof”是否为“ifstream”的有效状态
- 在c++中重置ifstream对象的文件结束状态