C++ Streambuf 方法可以抛出异常吗?

2024-05-15

我正在尝试找到一种方法来获取读取或写入流的字符数,即使存在错误并且读/写结束时间较短,该方法也是可靠的。

我正在做这样的事情:

return stream.rdbuf()->sputn(buffer, buffer_size);

但如果streambuf实现overflow允许抛出这样的期望:这是行不通的。是吗?我无法在任何地方找到它的记录。


basic_streambuf::overflow允许在失败时抛出异常,如中所述27.6.3.4.5/6,遗憾的是没有办法确保编译时该函数永远不会抛出异常。

看来你的运气已经不够了,唯一能百分百确定的方法就是overflow不会抛出异常就是编写你自己的streambuf只是在失败时不会这样做。


[27.6.3.4.5/2-3] int_type overflow(int_type = c = traits::eof ())
...

[27.6.3.4.5/5]

Requires:该虚函数的每个重写定义都应遵守以下约束:

1) 消耗一个字符对相关输出的影响 指定序列309

2) 设 r 为待处理序列中的字符数,而不是 消耗了。如果 r 非零,则 pbase() 和 pptr() 应设置为 即: pptr() - pbase() == r 和从 pbase() 开始的 r 字符是关联的输出流。如果 r 为零(待处理的所有字符 序列已被消耗)然后将 pbase() 设置为 NULL,或者 pbase() 和 pptr() 都设置为相同的 NULL 非值。

3) 如果将一些字符附加到 关联的输出流失败或者无法建立 pbase() 和 pptr() 根据上述规则。

[27.6.3.4.5/6]

Returns: traits::eof () or 如果函数失败则抛出异常

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

C++ Streambuf 方法可以抛出异常吗? 的相关文章

随机推荐

  • SQL Server 中的嵌套事务

    sql server 允许嵌套事务吗 如果是的话那么交易的优先级是什么 来自 SQL Server 上的 MSDN 文档 嵌套交易 http msdn microsoft com en us library ms189336 SQL 90
  • 二维数组的 MPI 数据类型

    我需要将一个整数数组的数组 基本上是一个二维数组 从根传递给所有处理器 我在 C 程序中使用 MPI 如何声明二维数组的 MPI 数据类型以及如何发送消息 我应该使用广播还是分散 你需要使用播送 http www netlib org ut
  • 获取 byte[]

    我有一个 html 画布 如下所示 output is a base64string of image data var oldImage new Image oldImage onload function var resizeRatio
  • window.open 使用 css 样式

    我想设计我的 window open 目前 我的网页上有一些项目由于解析了某个类而打开 然后在新窗口中打开指定的文本 我想更改字体大小 字体和填充等 这是我的 JavaScript 代码
  • ARM Chromebook 上的 Android 开发环境?

    我尝试了多次安装和使用安卓工作室 https developer android com studio index html on an ARM Chromebook C100P https archlinuxarm org platfor
  • 配置 Ping Federate 和 Spring SAML 对应用程序进行身份验证

    我在运行 Windows Server 2008 R2 SP1 English 64Bit Base 2014 04 09 的 AWS EC2 上安装了 PingFederate 我有一个使用 Spring Security 进行身份验证的
  • 如何从 firebase 函数访问 firestore

    我已经启动了一个无服务器 Web 应用程序的 Firebase 项目 我可以从客户端访问 Firestore 数据库 从无服务器端 我编写了一个在 http 请求上调用的函数 该函数尝试通过 Firestore 对象访问数据库 但它失败了
  • tr 元素周围的边框不显示?

    Chrome Firefox 似乎不渲染边框tr 但如果选择器是 它会渲染边框table tr td 如何在 tr 上设置边框 我的尝试 不起作用 table tr border 1px solid black table tbody tr
  • 在线性布局内的 ScrollView 内并排对齐 TextView

    我有一个带有滚动视图的线性布局 我想保留它的当前格式 但只需将 textView2a 和 textView3a 并排放置 而不会破坏我当前的布局格式 我已经包含了我最近的尝试 但它们似乎不正确 提前致谢 Java菜鸟 当前有效的 XML
  • 带有命令绑定的 KeyBinding 不适用于 TextBox UpdateSourceTrigger LostFocus

    我正在使用 MVVM 并遇到以下问题 我的 TextBox Text 与 UpdateSourceTrigger LostFocus 绑定 这就是用户想要的 我有一个带有 SaveCommand CommandBinding 的按钮 这有效
  • Java/Python 中的快速 IPC/Socket 通信

    我的应用程序中需要两个进程 Java 和 Python 进行通信 我注意到套接字通信占用了 93 的运行时间 为什么通讯这么慢 我应该寻找套接字通信的替代方案还是可以使其更快 更新 我发现了一个简单的修复方法 由于某些未知原因 缓冲输出流似
  • 如何使用 FLinq 在 F# 中进行外连接?

    问题几乎说明了一切 我有一个如下形式的大 flinq 查询 for alias1 in table1 do for alias2 in table2 do if alias1 Id alias2 foreignId 使用这种形式 如何在这两
  • 是否可以在 Visual Studio 中重命名项目,使其文件夹名称也重命名?

    假设我们正在开发一个名为 MyProject 的项目 我希望能够将其名称更改为 MyProject2 并将其文件夹名称也重命名为 MyProject2 这可以从 Visual Studio 中实现吗 如果不是 如何让这种情况发生在 外部 呢
  • preg_match 所有以@开头的单词?

    我对正则表达式不太确定 所以我不得不问你 如何用 PHP 判断字符串中是否包含以 开头的单词 例如我有一个像 This is for codeworxx 这样的字符串 我很抱歉 但我没有任何起点 希望你能帮忙 谢谢 萨沙 好的 谢谢你的结果
  • 如何从 BottomNavigationBar 中删除图标?

    我只需要 BottomNavigationBarItem 中的标签 但我找不到删除它们的方法 您可以隐藏标签showSelectedLabels and showUnselectedLabels设置为 false 但图标没有等效项 构造函数
  • 如何使用 Python 3 正确显示倒计时日期

    我正在尝试获取将显示的倒计时 基本上就像一个世界末日时钟哈哈 有人可以帮忙吗 import os import sys import time import datetime def timer endTime datetime datet
  • 无法从 JSON 请求获取数据,尽管我知道它已返回

    我试图获取从 getJSON 返回的数据 但我无法让它工作 我已经在 search twitter API 上尝试了相同的代码 效果很好 但它不适用于其他网站 我知道数据已返回 因为我在使用检查器时可以找到它 我通过检查器找到的值是 id
  • Java RMI - 客户端超时

    我正在使用 Java RMI 构建分布式系统 它必须支持服务器丢失 如果我的客户端使用 RMI 连接到服务器 如果该服务器出现故障 例如电缆问题 我的客户端应该会收到异常 以便它可以连接到其他服务器 但是当服务器出现故障时 我的客户端什么也
  • 更改 Windows Phone 系统托盘颜色

    有没有办法将 Windows Phone 上的系统托盘颜色从黑色更改为白色 我的应用程序有白色背景 所以我希望系统托盘也是白色的 您可以在页面 XAML 中执行此操作
  • C++ Streambuf 方法可以抛出异常吗?

    我正在尝试找到一种方法来获取读取或写入流的字符数 即使存在错误并且读 写结束时间较短 该方法也是可靠的 我正在做这样的事情 return stream rdbuf gt sputn buffer buffer size 但如果streamb