【发布时间】:2021-11-16 11:17:41
【问题描述】:
我试图在 ifstream 上使用下面的代码两次 - 在我从文件中读取任何内容之前,以及在我读取到文件末尾之后(使用 readline())。
m_hexFile->m_ifsteam->seekg(0, m_hexFile->m_ifsteam->ios_base::end);
test1 = m_hexFile->m_ifsteam->tellg();
m_hexFile->m_ifsteam->clear();
m_hexFile->m_ifsteam->seekg(m_hexFile->m_startPosition);
test1 = m_hexFile->m_ifsteam->tellg();
(m_startPosition是文件中间的某个位置,对于这个问题并不重要。)
在第一次运行时,代码按预期工作。然后当我第二次运行它时,变量test1 的值是-1,即使在使用clear() 之后也是如此。
我查看了类似的问题,所有解决方案都说使用函数clear()(我已经这样做了)。
【问题讨论】:
-
一半代码使用
m_hexFile->getFileRef(),一半使用m_hexFile->m_ifsteam。它们可以互换吗?无法判断,因为缺少该代码。考虑minimal reproducible example。 -
@RetiredNinja 是的,它们是可以互换的。
-
@RetiredNinja 在制作最小示例的过程中,我注意到代码中的错误。我正在其他地方关闭流。在封闭的流上使用 seekg() 当然总是返回 -1。所以我想谢谢你的帮助。 :)