【问题标题】:seekg after reading to the end of the fileseekg 读到文件末尾
【发布时间】: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。所以我想谢谢你的帮助。 :)

标签: c++ ifstream seekg


【解决方案1】:

解决方案是在其他地方检查。我已经在程序的其他地方关闭了流。在封闭的流上使用上面的代码当然是行不通的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 2013-01-25
    • 1970-01-01
    • 1970-01-01
    • 2012-06-16
    • 1970-01-01
    相关资源
    最近更新 更多