与我的自定义 Streambuf 类一起使用时,istream::tellg() 返回 -1?

2024-02-13

我正在尝试创建一个istream直接从原始内存缓冲区读取。

我在这里的另一篇文章中找到了一个很好的方法:

  class membuf : public basic_streambuf<char>
  {
  public:
      membuf(char* p, size_t n) {
          setg(p, p, p + n);
      }
  };

然后我创建我的istream使用这个membuf:

    membuf mb(dataPointer, dataLength);
    istream reader(&mb);

然后我阅读使用getline() and >>运营商,一切都很美好。但是,我似乎无法使用seekg()倒回到缓冲区的开头,并且istream::tellg()总是返回-1.

我是否需要编写更多代码才能使它们正常工作,或者这注定会失败?


函数tellg 和seekg 依赖于受保护的虚拟函数seekoff and seekpos,你必须在你的membuf class.

默认值在basic_streambuf刚刚返回pos_type(off_type(-1))对于所有调用(对于许多实现来说可能等于 -1)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

与我的自定义 Streambuf 类一起使用时,istream::tellg() 返回 -1? 的相关文章

随机推荐

  • 如何使Qt主窗体在屏幕上居中?

    我已经在主窗体的构造函数中尝试过这些 QRect desktopRect QApplication desktop gt availableGeometry this move desktopRect center frameGeometr
  • 登录表单上的 ssl?

    我的网站上有 SSL 当用户从 http 页面登录时 表单操作会发送到 https 页面 这仍然会保护发布的数据吗 或者将表单和页面发布到 SSL 会更好吗 Thanks It is对于带有表单的页面和正在提交的页面都是绝对必要的to为 H
  • ActiveAdmin:批量选择所有页面

    使用 activeadmin 是否可以对特定模型的所有记录执行批处理操作 而不是仅在当前页面上选择的记录 默认批处理操作仅对当前页面中的选择进行操作 您必须定义自己的批处理操作 该操作仅忽略选择并对所有记录执行操作 See http act
  • 为什么在检查依赖关系时使用 GemSpec + GemFile?

    每当开发 gems 时 我看不出有任何理由不直接检查 Gemfile 的依赖关系 确实 为什么要使用 gemspec文件以便列出它们 有真正的好处吗 嗯 那是因为Gemfile不是来自 Rubygems 的文件 而是来自 Bundler 的
  • 制作一个独立的列表(?)

    我正在尝试列表并尝试显示以下代码段 hello 但要做到这一点 我需要让 3 个 listSmall 彼此独立 有没有办法做到这一点 当前输出当然是 hello hello hello listSmall listBig listSmall
  • 在保存付款方式之前如何获取报价总额?

    我正在尝试创建一步结帐 但在结帐页面中我遇到了订单审核部分的问题 当我选择付款方式时 例如 货到付款 有 5 美元的额外费用 或者 checkorder 有 4 的折扣 或者 信用卡付款 会在订单总额中增加额外费用 我需要一种在保存付款方式
  • 将 AnyGenerator 与 Swift 2.2+ 一起使用(自定义类的“for in”循环支持)

    以前我使用以下函数使我的自定义类符合 SequenceType 协议 func generate gt AnyGenerator
  • 我想从 MySQL 数据库中随机选择一个 YouTube 视频,并将其显示在我的网页上 [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一个名为 Videos 的 My
  • Bootstrap 4 导航栏将徽标中心对齐并在左侧切换图标

    我想让徽标居中 链接位于导航栏的左侧 当它们在小型设备中折叠时 切换按钮应出现在左侧 此处出现在右侧 并且徽标应固定 不折叠
  • JNI 对象指针

    Problem 在尝试 JNI 接口时 我想知道是否可以采取JObject并将其转换为等效的结构来操作字段 然而 当我尝试时 我惊讶地发现这不起作用 忽略这个想法可能有多么可怕 为什么它不起作用呢 我的方法 Java测试类 我做了一个简单的
  • 向 ggplot2 添加小刻度和标签

    必须有一种更简单的方法来使用 ggplot2 在图中添加自定义刻度和标签 而不是像论坛中的一些答案那样创建自定义函数 这是我的代码 data lt data frame WS Spd WVT c 0 5 1 2 4 2 0 3 C E c
  • python如何比较字符串和整数[重复]

    这个问题在这里已经有答案了 在下面的代码中 这是一个用于对元素进行排序的简单算法 我的问题是如何在内部比较字符串以及解释器如何知道这些字符串将放置在整数之后 a 22 66 54 11 16 2 5 b a 3 2 1 gt gt gt f
  • 如何在kafka中初始化kafka ConsumerRecords进行测试

    我正在为 kafka 消费者组件和模拟编写测试用例kafkaConsumer poll 它返回的实例ConsumerRecords
  • 设置 md-grid-list 样式

    我正在使用 Angular Material 网格列表来显示大约 500 1000 个项目 我在根据自己的喜好设计它时遇到了一些麻烦 这是网格列表现在的样子
  • Cassandra中删除表或截断表哪个更好

    我们有一个用例 我们需要每天使用 Cassandra 中的当前数据重新创建一个表 为此 我们应该使用 drop table 还是 truncate table 哪个会更有效率 我们不希望数据被备份等 谢谢 安库尔 我认为对于几乎所有情况 截
  • Windows 8 Phone 客户端证书 HTTPS 身份验证

    我正在尝试使用我正在开发的 Windows 8 Phone 应用程序中的客户端证书访问安全的 HTTPS 服务器 这根本不起作用 这让我尝试从标准 Web 浏览器访问 HTTPS 服务器 但它也不起作用 我不知道 Internet Expl
  • 从 SonarQube 删除项目

    有谁知道如何从 SonarQube 服务器删除项目 谢谢 罗南 您有 2 种方法可以删除项目 如果您是项目的管理员 则可以从其配置操作中将其删除 gt 参见 项目管理 文档页面中的 删除项目 https docs sonarqube org
  • 如何从 SQL Server 中的 TOP 中排除 LEFT JOINed 表?

    假设我有两个书籍表和两个对应版本的表 我有一个查询如下 SELECT TOP 10 FROM SELECT hbID hbTitle hbPublisherID hbPublishDate hbedID hbedDate FROM hard
  • Typescript 和 React 组件接受 TextArea 和 Input 的 onChange

    我是打字稿新手 我正在尝试创建一个输入组件 如果它收到type text 它呈现一个input如果它收到type textarea 它呈现 你明白了 一个textarea 问题是 当我在代码中使用该组件时 打字稿会抱怨onChange 似乎
  • 与我的自定义 Streambuf 类一起使用时,istream::tellg() 返回 -1?

    我正在尝试创建一个istream直接从原始内存缓冲区读取 我在这里的另一篇文章中找到了一个很好的方法 class membuf public basic streambuf