【发布时间】:2015-12-02 04:05:23
【问题描述】:
我有一个函数,它接受一个 ifstream、ifs,并使用它来填充它: std::vector 矩阵; (这是一项任务,我对如何更好地实现这一点没有任何发言权)。 在开始填写“矩阵”之前,我想知道我正在阅读的文件的长度 这样,我将避免不断调整大小。但是,我只有一个 ifstream 对象,ifs。如果我使用循环来查找文件的长度,我将位于文件的末尾,并且我不确定如何“刷新”一个 ifstream 以使其再次位于第一行。 我正在考虑的其他事情是创建 ifs 的副本。这样,我可以遍历一个 ifstream,关闭它,然后使用另一个来获取数据。 我觉得打开两个 ifstream 并指向同一个文件会有问题。
我不知道实现这两个想法的方法。请假设我无法再访问原始文件名/路径。
有什么想法吗?
【问题讨论】:
-
我不认为你想要做这个复制的事情..从流中读取是一个 I/O 操作 AFAIK,读取数据两次是一个非常糟糕的主意..你'通过向量调整 mem 的大小比再次从流中读取要好
-
文件中的矩阵是如何编码的?你怎么知道它的大小?
-
矩阵每行对应一行,每行每一个字符对应一列;它可以变得相当大。